一、命令行方式运行
执行某个目录下所有的用例,符合规范的所有用例
进入到对应的目录,直接执行pytest; 例如需要执行testcases 下的所有用例; 可以进入testcases 目录; 然后执行pytest
进入对应目录的上级目录,执行pytest 目录名称/ ; ; 例如需要执行testcases 下的所有用例; 可以在study_project 目录; 然后执行pytest testcases/
执行某一个py文件下用例
pytest 脚本名称.py
运行.py模块里面的某个函数
pytest test_mod.py::TestClass
运行.py模块里面的某个函数
pytest test_mod.py::test_func
运行.py模块里面,某个测试类
pytest test_mod.py::TestClass
运行.py模块里面,测试类里面的某个方法
pytest test_mod.py::TestClass::test_method
多种组合
pytest test_mod1.py::TestClass::test_method test_mod2.py
标记运行
pytest -m login 运行标记为login 的用例
二、main方法运行
一般在项目根目录指定需要运行的路径和参数
三、通过全局配置文件pytest.ini
pytest.ini应该放哪里?就放在项目根目录下 ,不要乱放,不要乱起其他名字
常用的配置项
marks
作用:测试用例中添加了 @pytest.mark.webtest 装饰器,如果不添加marks选项的话,就会报warnings
格式:list列表类型
写法:
# mark
markers =
smoke:冒烟用例
order: 订单用例
product: 商品用例
更改测试用例收集规则
pytest默认的测试用例收集规则
- 文件名以 test_*.py 文件和 *_test.py
- 以 test_ 开头的函数
- 以 test 开头的类,不能包含 __init__ 方法
- 以 test_ 开头的类里面的方法
我们是可以修改或者添加这个用例收集规则的;当然啦,是建议在原有的规则上添加的,如下配置:
testpaths=testcases/test_study/
python_files =test_* *_test test*
python_classes =Test* test*
python_functions =test_* test*
备注: testpaths=testcases/test_study/ 如果在项目根目录执行pytest,那么就会以当前执行目录为相对路径,执行根目录下的testcases下的test_study下的文件会执行;其他不执行
例如:
输出:
addopts
作用:addopts参数可以更改默认命令行选项,这个当我们在cmd输入一堆指令去执行用例的时候,就可以用该参数代替了,省去重复性的敲命令工作
# 例如命令行参数,失败重跑两次,一共运行两次,生成测试报告
addopts = -v --reruns=
1
--count=
2
--html=reports.html --self-contained-html -n=auto
log_cli
作用:控制台实时输出日志
格式:log_cli=true 或false(默认),或者log_cli=1 或 0