pytest是⼀个⾮常成熟的全功能的Python测试框架,主要特点有以下⼏点:
- 能够⽀持简单的单元测试和复杂的功能测试,还可以⽤来做selenium/appnium 等⾃动化测试、接口⾃动化测试(pytest+requests);
- pytest具有很多第三⽅插件,并且可以⾃定义扩展,⽐较好⽤的如pytestselenium(集成selenium)、pytest-html(完美html测试报告⽣成)、pytestrerunfailures(失败case重复执⾏)、pytest-xdist(多CPU分发)等;
- 测试⽤例的skip和xfail处理;
- 可以很好的和jenkins集成;
实用注意:
- pytest只能识别以test_开头和_test结尾的.py⽂件,识别以test.开头的所 有⽅法、类
- 测试类必须以Test开头,并且不能有 init ⽅法
- 测试⽅法必须以test_开头
- 如果当前⽂件夹下有多个⽂件,test_sample2.py , test_sample3.py 想 要运⾏所有的测试⽤例,只需要运⾏命令:pytest就可以了。如果运 ⾏单个⽂件,则运⾏命令: pytest test_sample2.py •
- 断⾔使⽤基本的assert即可。
命令参数
命令 | 解释 |
---|---|
pstest --version | 显示版本信息 |
pytest --fixtures | 显示可用的内置函数 |
pytest -h | --help | 显示参数和配置信息 |
pytest --lf | 运行上一次失败案例 |
pytest -x | --exitfirst | 第一次失败后停止 |
pytest --maxfail=2 | 第二(n)次次失败后停止 |
pytest test_mod.py | 运行单个文件中的用例 |
pytest testing/ | 运行文件夹下的用例 |
pytest test_mod.py::TestClass::test_methos | 运行模块下类特定的方法 |
pytest -m slow | marker运行测试用例(运行所有被装饰器标记@pytest.mark.slow的用例) |
pytest --prargs pkg.testing | 从包中运行测试用例(要导入 import pkg.testing) |
pytest -ra | 运行测试用例(显示测试总的结果信息,输出信息的最后) |
pytest -rp | 运行测试用例(显示测试 通过的结果信息,输出信息的最后) |
pytest -rE | 运行测试用例(显示测试错误的结果信息,输出信息的最后) |
pytest -rs | 运行测试用例(显示测试跳过的结果信息,输出信息的最后),也可以结合使用 -ref 显示跳过的失败的 |
pytest -v pytest1.py | -v 用于显示每个测试函数的执行结果 |
pytest -q pytest1.py | -q 只显示整体测试结果 |
pytest -s pytest1.py | -s 用于显示测试函数中print()函数输出 |
pytest --durations=10 | 获得最慢的10个测试持续时间表 |
pytest --junitxml=path | s生成一个结果集xml文件,可用于Jenkins持续集成 |
pytest --pastebin=failed | 为每个失败的用例创建一个url |