这些是之前的文章,里面有一些基础的知识点在前面由于前面已经有写过,所以这一篇就不再详细对之前的内容进行描述
Python自动化测试实战篇(1)读取xlsx中账户密码,unittest框架实现通过requests接口post登录网站请求,JSON判断登录是否成功
Python自动化测试实战篇(2)unittest实现批量接口测试,并用HTMLTestRunner输出测试报告
Python自动化测试实战篇(3)优化unittest批量自动化接口测试代码,ddt驱动+yaml实现用例调用,输出HTMLTestRunner测试报告
Python自动化测试实战篇(4)selenium+unttest+ddt实现自动化用例测试,模拟用户登陆点击交互测试,Assert捕获断言多种断言
Python自动化测试实战篇(5)优化selenium+unittest+ddt,搞定100条测试用例只执行前50条
pytest是一个非常好用的而且成熟的python测试框架
pip3 install pytest
pip3 install sugar
pip3 install pytest-rerunfailures
pip3 install pytest-xdist
pip3 install pytest-assume
pip3 install pytest-html
pip3 install request
由于我的postman不知道为什么崩溃掉了,新增了环境变量和修改删除了一些东西以后都还是无法使用,于是我就换成了apifox来模拟接口
测试模块名用test_开头或_tsest结尾
测试类必须以test开头或结尾
测试函数必须以test开头或结尾
import pytest
class Test_Pytest():
def test_one(self):
print("测试方法1执行" )
assert 2==2
def test_two(self):
print("测试方法2执行" )
def test_three(self):
print("测试方法3方法执行" )
if __name__=="__main__":
pytest.main(['testpy.py'])
做request接口测试之前我们需要了解
主要用于请求中的数据部分,如发送一段需要请求的body信息,然后返回数据,如下图所示
import pytest
import requests
import allure
class Test_Pytest():
def test_one(self):
url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'msg': 'admin', 'code': '','result':''}
reps = requests.post(url=url, headers=headers, data=data)
print(reps.text)
assert True
def test_two(self):
url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login?apifoxResponseId=175999630'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'msg': 'admin', 'code': '', 'result': ''}
reps = requests.post(url=url, headers=headers, data=data)
print(reps.text)
def test_three(self):
print("测试方法3方法执行" )
assert False
if __name__=="__main__":
pytest.main(['testpy.py','--alluredir', './report/xml'])
为allure做准备
在最尾部的时候要打印出report信息才能被allure识别出来
if __name__=="__main__":
pytest.main(['testpy.py','--alluredir', './report/xml'])
allure的安装和配置看下面这篇文章
allure安装
安装完成后最后执行这个下面的代码直接生成测试报告
import os
import pytest
import requests
import allure
class Test_Pytest():
def test_one(self):
url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'msg': 'admin', 'code': '','result':''}
reps = requests.post(url=url, headers=headers, data=data)
print(reps.text)
assert True
def test_two(self):
url = 'http://127.0.0.1:4523/m1/2459729-0-default/happyshop/login?apifoxResponseId=175999630'
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
data = {'msg': 'admin', 'code': '', 'result': ''}
reps = requests.post(url=url, headers=headers, data=data)
print(reps.text)
def test_three(self):
print("测试方法3方法执行" )
assert False
if __name__=="__main__":
pytest.main(['testpy.py','--alluredir', './report/xml'])
os.system('allure serve ./report/xml')
查看失败的方法,一般来说需要增加断言进行捕获才能清楚认知到具体错误的原因,单从响应返回json来看的话只能看到接口是不是通的情况。