pytest简介
支持参数化可以细分控制测试用例、支持简单的单元测试和复杂的功能测试、还支持selenium/appium等自动化测试、接口自动化测试
支持第三方插件,可以自定义扩展、pytesthtml(
生成测试报告)、pytest-rerunfailures(失败case重复执行)
测试用例的skip和xfail处理
pytest脚本文件的文件名要带test名称,否则不会识别为测试用例也不会被pytest进行执行
'''
1、定义reverse函数、源代码
2、定义了两个test_reverse函数
3、在该目录下打开命令行,pytest xxx.py 运行指定的py文件
4、直接运行pytest而不添加脚本名称,会吧所有带test的名字的文件执行一遍,
5、只有带test的文件才会被收集test_xxx()的函数或者方法作为测试用例执行
6、断言使用assert,是python自带的断言方式,不属于pytest的
7、当测试用例有多个验证点,其中某一个验证点一旦不通过,后面的验证点都不会再执行.
8、pytest测试验证点是按顺序执行的,包括顺序执行测试函数顺序,所以重要的函数要放在前面先进行执行,重要的断言也要写在前面
'''
def reverse(str):
return str[::-1] #倒序 输出
s = 'python'
s = [1,2,3,4]
def test_resverse():
assert reverse('god') == 'dog'
def test_resverse02():
assert reverse('456') == 'dog' #执行测试用例这个会不通过
[
{"name": "tony","password": "password"},
{"name": "tony2","password": "password2"},
{"name": "tony3","password": "password3"}
]
//新建一个名为users_dev.json的文件
'''
执行顺序:
1、pytest找到test开头或结尾py文件,再去找到以test开始的方法,然后执行这个test方法做测试
2、执行该方法发现传入参数里有跟fixture同名的users
3、pytest认定users是fixture,执行users方法,读取json文件解析成python对象
4、开始真正执行test_user_pwd方法,users返回值传入该方法
5、测试环境准备、数据准备
'''
#新建一个有test的py脚本
#fixture的使用
import pytest
strfile = 'C:\\ProgramEdit\\pythonProject\\202112245_03\\pytest\\users_dev.json'#你的users_dev.json存储文件位置
class TestUserPassword:
@pytest.fixture()
def users(self):
return json.loads(open(strfile,'r').read())
def test_user_pwd(self,users):
with pytest.raises(AssertionError):
for user in users:
pwd = user['password']
assert len(pwd)>=10#这么写测试用例是不通过的,会报AssertionError说我们断言错误,但这么写执行用例时不会报错
#因为我们规定了可以出现AssertError异常,所以pytest test_03_fixture.py能够成功执行
# class TestUserPassword:
# @pytest.fixture()
# def users(self):
# return json.loads(open(strfile,'r').read())
# def test_user_pwd(self,users):
# for user in users:
# pwd = user['password']
# assert len(pwd)>=5 #这个是不报异常可以的执行语句记得控制台执行测试脚本时候尝试一下
# class TestUserPassword:
# @pytest.fixture()
# def users(self):
# return json.loads(open(strfile,'r').read())
# def test_user_pwd(self,users):
# for user in users:
# pwd = user['password']
# assert len(pwd)>=10 #这个是执行报错的记得注意一下