pytest学习笔记
pytest运行方式
命令行运行
运行某个模块 pytest xxx.py 运行某个文件夹下面的所有 pytest xxx/ 指定用例失败个数 pytest -x # 第01次失败,就停止测试 pytest --maxfail=2 # 出现2个失败就终止测试 通过关键字表达式过滤执行 pytest -k "MyClass and not method" 这条命令会匹配文件名、类名、方法名匹配表达式的用例,这里这条命令会运行 TestMyClass.test_something, 不会执行 TestMyClass.test_method_simple 运行指定测试 pytest xxx.py::xxx类::xxx方法 通过标记表达式执行 pytest -m slow 这条命令会执行被装饰器 @pytest.mark.slow 装饰的所有测试用例 通过包执行测试 pytest --pyargs pkg.testing 这条命令会自动导入包 pkg.testing,并使用该包所在的目录,执行下面的用例。 多进程运行cases 当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。 安装pytest-xdist: pip install -U pytest-xdist 运行模式: pytest test_se.py -n NUM 其中NUM填写并发的进程数。 重试运行cases 在做接口测试时,有事会遇到503或短时的网络波动,导致case运行失败,而这并非是我们期望的结果,此时可以就可以通过重试运行cases的方式来解决。 安装pytest-rerunfailures: pip install -U pytest-rerunfailures 运行模式: pytest test_se.py --reruns NUM NUM填写重试的次数。 显示print内容 在运行测试脚本时,为了调试或打印一些内容,我们会在代码中加一些print内容,但是在运行pytest时,这些内容不会显示出来。如果带上-s,就可以显示了。 运行模式: pytest test_se.py -s 另外,pytest的多种运行模式是可以叠加执行的,比如说,你想同时运行4个进程,又想打印出print的内容。可以用: pytest test_se.py -s -n 4
主文件运行
# file_name: test_abc.py import pytest # 引入pytest包 def test_a(): # test开头的测试函数 print("------->test_a") assert 1 # 断言成功 def test_b(): print("------->test_b") assert 0 # 断言失败 if __name__ == '__main__': pytest.main("-s test_abc.py") # 调用pytest的main函数执行测试
运行返回码
pytest有以下6种退出码: Exit code 0: 找到所有测试用例并测试通过 Exit code 1: 找到测试用例并运行但是部分测试用例运行失败 Exit code 2: 用户中断了测试 Exit code 3: 执行过程中发生了内部错误 Exit code 4: pytest命令行使用错误 Exit code 5: 没有找到任何测试用例
未完待续。。。