Pytest-快速入门

Pytest-快速入门
怀光为什么选用 pytest?
选择 pytest
的理由包括:
- 简单易用:编写测试用例只需普通的 Python 函数,无需继承特定类。
- 功能丰富:支持参数化、断言重写、插件扩展等功能。
- 活跃社区:拥有大量插件和丰富的社区支持。
- 兼容性:兼容 unittest 和 nose 测试框架。
安装 pytest
使用 pip 安装 pytest
:
1 | pip install pytest |
查看版本
查看当前安装的 pytest 版本:
1 | pytest --version |
快速开始
1 | # 文件名必须以 test_ 开头或结尾 |
运行测试:
1 | pytest |
结果显示:
1 | ____________________________ test_add ____________________________ |
知识点
- 如果只执行 pytest ,会查找当前目录及其子目录下以 test_*.py 或 *_test.py 文件,找到文件后,在文件中找到以 test 开头函数并执行
- 如果只想执行某个文件,可以 pytest test_first.py
- 加上-q,就是显示简单的结果: pytest -q test_first.py
用例设计原则
在编写测试用例时,需要遵循以下设计原则
- 独立性:测试用例之间不应互相依赖。
- 清晰性:用例名称和断言应简洁明了。
- 覆盖性:尽可能覆盖正常路径和异常路径。
- 可维护性:使用 fixtures 和参数化提高用例复用性。
pytest 执行与收集用例规则
用例收集规则(后面讲如何自定义)
- 文件名必须以
test_
开头或以_test
结尾。 - 测试函数名称必须以
test_
开头。 - 测试类名称必须以
Test
开头,且不继承任何类。 - 测试类中的方法名称必须以
test_
开头。
执行规则
运行指定文件:
1 | pytest test_sample.py |
运行指定用例:
1 | pytest test_sample.py::test_add |
运行指定目录:
1 | pytest tests/ |
pytest 参数解释
pytest 提供了丰富的命令行参数,常用如下:
控制测试输出
-v
:显示详细信息。-q
:只显示测试结果的摘要。
指定用例
-k '关键字'
:只运行名称包含关键字的测试用例。1
pytest -k 'add'
并行执行
安装 pytest-xdist
后,可通过 -n
指定并行进程数:
1 | pip install pytest-xdist |