以下是 pytest 运行时的一些常用参数,按功能分类整理:
1. 运行控制
-v/--verbose:详细输出,显示每个测试用例的名称和结果。-q/--quiet:静默模式,仅输出简略信息。-x/--exitfirst:遇到第一个失败或错误时立即停止测试。--maxfail=NUM:允许最多失败NUM次后停止测试。--lf/--last-failed:仅重新运行上次失败的用例。--ff/--failed-first:先运行上次失败的用例,再运行其他用例。
2. 测试选择
-k EXPRESSION:通过名称匹配选择测试用例(支持表达式,如-k "test_login or test_logout")。-m MARKER:运行标记(Mark)为MARKER的测试用例(需提前用@pytest.mark.MARKER标记用例)。--collect-only:仅收集用例但不执行(用于查看用例列表)。--ignore=PATH:忽略指定路径的测试。
3. 输出控制
-s:禁用输出捕获(直接打印print的输出)。-r:显示测试摘要(附加选项如-rA显示全部,-rE显示错误等)。--tb=STYLE:设置错误回溯的显示方式(如--tb=short简洁回溯,--tb=no禁用)。--show-capture={no,stdout,stderr,log,all}:控制捕获输出的显示方式。
4. 调试与跟踪
--pdb:在测试失败时进入调试模式(pdb)。--trace:在每个测试用例开始时进入调试模式。--setup-show:显示测试的setup和teardown过程。
5. 测试目录/文件
rootdir:指定根目录(默认从当前目录搜索测试文件)。-c FILE:指定配置文件(默认为pytest.ini、tox.ini或setup.cfg)。
6. 并行执行
-n NUM/--numprocesses=NUM:使用多进程并行执行测试(需安装pytest-xdist插件)。
7. 生成报告
--junitxml=FILE:生成 JUnit 格式的 XML 报告(用于 CI/CD 集成)。--html=FILE:生成 HTML 格式的测试报告(需安装pytest-html插件)。
8. 参数化与配置
--fixtures:显示所有可用的 fixtures(--fixtures-per-test显示每个测试的 fixtures)。--durations=N:显示最慢的N个测试耗时(--durations=0显示全部)。
示例命令
# 运行名称包含 "login" 的测试,显示详细信息,失败时停止
pytest -v -k "login" -x
# 运行标记为 "smoke" 的测试,并生成 HTML 报告
pytest -m smoke --html=report.html
# 多进程运行测试(4 进程)
pytest -n 4
unittest vs pytest 对比
| 特性 | unittest | pytest |
|---|---|---|
| 语法简洁性 | 需要继承类,使用断言方法(如 self.assertEqual()) | 直接使用 assert,更简洁 |
| 高级功能 | 较少 | 支持fixture、参数化测试、插件系统等 |
| 兼容性 | Python内置,无需安装 | 需单独安装 |
| 测试发现 | 需遵循特定规则(如 test_ 前缀) | 更灵活的测试发现机制 |
查看完整参数
- 通过
pytest --help查看所有支持的参数。 - 官方文档:https://docs.pytest.org