pytest 基于unittest封装的第三方测试框架,易学易用,兼容性非常好,支持UI自动化脚本开发,支持接口自动化脚本开发,支持持续集成jenkins,支持分布式执行,支持错误调试,支持错误重跑机制,支持allure报告框架
pip install pytest
—脚本开发与执行 pip install pytest-html
—脚本运行生成测试报告pip install pytest-xdist
—脚本运行分布式执行例子 :
pytest.main(['[脚本名称]','-s'])
执行当前脚本下的用例,打印printpytest.main(['[脚本名称]::脚本下的类名称::类下面的方法名称','-v'])
指定类下的方法执行用例pytest.main(['[脚本名称]::脚本下的类名称', '-v','--html=report.html'])
指定测试类执行用例pytest.main([__file__])
#指定当前模块执行测试-s
:执行print() pytest.main(['[包名]::类名','-s'])
-v
:详细输出日志 pytest.main(['[包名]::类名::方法名称','-v'])
-n
:指定分布式执行的次数 ‘-n’ ‘2’ pytest.main(['[包名]','-n','2'])
-q
:安静模式,极简模式,不加载环境配置信息及日志信息,尽量与-v不要同时使用 pytest.main(['[包名]','-q'])
-m
:标记执行,支持逻辑运算符 -k
:标记执行 ,模糊匹配 支持逻辑运算符 -x
:执行失败一次就终止测试--maxfail=1
:设置失败的最大次数--rerun=2
:指定次数为两次 需要安装 pytest-rerunfailures单个参数
@pytest.mark.parametrize('参数',['参数对应的值'])
例子:
@pytest.mark.parametrize('username',['admin'])---单个参数
一组参数
@pytest.mark.parametrize('参数1,参数2',[['参数1对应的值','参数2对应的值']])
例子:
@pytest.mark.parametrize('username,password',[['admin','milor123']])一组参数
多组参数
@pytest.mark.parametrize('参数1,参数2',[['参数1对应的值','参数2对应的值'],['参数1对应的值','参数2对应的值']])
例子:
@pytest.mark.parametrize('username,password',[['admin','milor123'],['lm','LiuM123']])
-k
模糊匹配标记 标记含有某个字符串的测试用例进行执行操作(支持逻辑运算符 and or )
例
pytest.main([__file__,'-s','-k','login']) #执行用例名称中包含login的测试用例
pytest.main([__file__, '-s', '-k', 'login and index ']) #执行用例名称中包含login和index的测试用例
pytest.main([__file__, '-s', '-k', 'login or index ']) #执行用例名称中包含login或index的测试用例
-m
标记 设置标记,在配置文件pytest.ini 设置markers,支持设置多个标记,应用场景:冒烟测试、回归测试等,支持逻辑运算符 and or
1、pytest.ini
放置在pytest 工作目录中,创建这个文件,编辑内容
2、在需要打标记的测试用例上面使用装饰器 @pytest.mark.smoke
3、在测试执行时,输入 -m
参数进行标记执行
提示 :如果在运行过程中出现了如下警告则是未在pytest中设置标记
ytestUnknownMarkWarning: Unknown pytest.mark.smoke
代码实例:
参数也可以这样写:
setup / teardown
unittest测试框架中的前后置,在pytest兼容,function和method 功能类似于构造__init__与析构__del__
每条测试用例执行之前均要执行一次setup
每条测试用例执行完之后均要执行一次teardown
适用于函数或类下的方法—测试用例
setup_function /teardown_function
应用于函数中,每个测试函数执行之前进行setup初始化,执行之后进行teardown回收资源,恢复现场
setup_module / teardown_module
应用于函数中,针对当前模块,所有测试函数执行之前进行setup初始化,执行之后进行teardown回收资源,恢复现场
setup_class / teardown_class
应用于类中,所有测试函数执行之前进行setup初始化,执行之后进行teardown回收资源,恢复现场
setup_method / teardown_methon
应用于类中,每个测试方法执行之前进行setup初始化,执行之后进行teardown回收资源,恢复现场
总结:
测试场景:所有测试用例执行时均需要某个对象dr或者某种状态session,需要持续使用,可以适用此方法,比如:测试登录之后的模块,需要登录的driver或者会话session setup_module setup_class
语法 :@pytest.fixture(scope='function',name='myfix',autouse=True)
代码:
代码演示:
脚本执行模式
工具中run脚本,走main入口
命令行模式运行pytest脚本名称
pytest [脚本名称.py]::test_login -s -m smoke
指定模块下的测试用例标记执行,并打印print内容
从上往下依次执行,可以使用 order参数进行排序
@pytest.mark.run(order=2)
@pytest.mark.run(order=1)