1、pytest.main() 运行模式时,main()不添加任何参数,表示运行当前目录下的所有的测试文件;
2、main()添加参数如下:
pytest.main(['-s', '-v', '-q', '-x','-k "print"'])
-s 对于代码里print语句会将输出至控制台
-v 用于增加测试用例的冗长
-q 用于减少测试用例的执行结果的冗长
-x 出现一条用例执行失败就退出测试,调试阶段常用
-k "print" 运行包含某个字符串的用例,如pytest -k add XX.py 表示运行XX.py中包含add的测试用例
等等
3、执行测试用例的过滤
执行某个测试类或测试方法用 :: 隔开,常用-vs参数
pytest.main(["-vs","模块.py::类或方法"]) 命令行为:pytest 文件名.py::测试方法
pytest.main(["-vs","模块.py::类::方法"]) 命令行为:pytest 文件名.py::测试类::测试方法
如果是在main目录入口执行测试用例文件:
import pytest
if __name__ == '__main__':
pytest.main(["-vs","--html=../../report_hdc/20211011_hdc_02.html","--self-contained-html"])
4、如果使用pytest.main()生效,再pycharm中必须设置Tools>Python Integrated Tools>Default test runner=Unittests;如果设置为pytest则是无效的。
5、在pytest中,测试函数可能返回多种结果,不只是通过或失败。如下:
PASSED(.):测试通过
FAILED(F):测试失败
SKIPED(s):测试未被执行,指定测试跳过执行
xfail (x):预期测试失败,并且确实失败
XPASS (X):预期测试失败,但实际上运行通过,不符合预期
ERROR (E):测试用例之外的代码触发的异常
6、pytest.main(["-m", "run_first"])
使用-m 对用例进行标记,用例需注释@pytest.mark.xxx,将xxx作为参数传入
使用-m "mark1 and mark2"可以同时选中带有这两个标记的所有测试用例。
使用-m "mark1 and not mark2"选中带有与mark1的测试用例,而过滤掉带有mark2的测试用例
使用-m "mark1 or mark2"则选中带有mark1或者mark2的所有测试用例
网友评论