
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)