pytest
是 Python 中常用的测试框架,它提供了许多命令行可选项(options)来增强测试功能和控制测试流程。下面是 pytest
中一些常见的可选项及其功能的详细介绍:
1. 基本可选项
-
-v
或--verbose
:- 功能:增加输出的详细程度,显示每个测试函数的名称及其状态。
- 用法:
pytest -v
-
-q
或--quiet
:- 功能:减少输出,只显示最基本的信息。
- 用法:
pytest -q
-
-x
或--exitfirst
:- 功能:遇到第一个失败的测试就停止测试执行。
- 用法:
pytest -x
-
--maxfail=[num]
:- 功能:当失败测试数量达到指定数量后停止执行。
- 用法:
pytest --maxfail=2
-
--tb=[style]
:- 功能:指定 traceback(回溯)风格。可选值包括
auto
,long
,short
,line
,native
, 和no
。 - 用法:
pytest --tb=short
- 功能:指定 traceback(回溯)风格。可选值包括
2. 选择测试
-
-k [expression]
:- 功能:仅运行符合给定表达式的测试。表达式可以是测试名的一部分或布尔表达式。
- 用法:
pytest -k "TestClass and not test_method"
-
-m [marker]
:- 功能:运行带有特定标记(marker)的测试。
- 用法:
pytest -m marker_name
-
--disable-warnings
:- 功能:运行测试时不显示警告信息。
- 用法:
pytest --disable-warnings
3. 输出与报告
-
--junitxml=[path]
:- 功能:生成符合 JUnit XML 格式的测试报告。
- 用法:
pytest --junitxml=report.xml
-
--result-log=[path]
:- 功能:将测试结果保存到指定文件。
- 用法:
pytest --result-log=results.log
(注意:此选项在 pytest 6.0 版本中被移除)
-
--html=[path]
:- 功能:生成 HTML 格式的测试报告。需要安装
pytest-html
插件。 - 用法:
pytest --html=report.html
- 功能:生成 HTML 格式的测试报告。需要安装
4. 插件和扩展
-
--durations=[num]
:- 功能:显示运行最慢的 N 个测试。
- 用法:
pytest --durations=5
-
--lf
或--last-failed
:- 功能:仅重新运行上次失败的测试。
- 用法:
pytest --lf
-
--ff
或--failed-first
:- 功能:优先运行上次失败的测试。
- 用法:
pytest --ff
-
--pdb
:- 功能:在失败的测试点启用调试器(pdb)。
- 用法:
pytest --pdb
5. 其他常用选项
-
--collect-only
:- 功能:只收集测试用例而不运行。
- 用法:
pytest --collect-only
-
--cov=[path]
:- 功能:生成代码覆盖率报告。需要安装
pytest-cov
插件。 - 用法:
pytest --cov=my_package
- 功能:生成代码覆盖率报告。需要安装
-
--disable-warnings
:- 功能:在运行测试时禁用警告输出。
- 用法:
pytest --disable-warnings
-
--maxfail=[num]
:- 功能:指定最大失败测试数量,达到该数量时停止测试。
- 用法:
pytest --maxfail=3
示例
# 运行测试并生成详细输出,同时生成 HTML 和 JUnit 报告
pytest -v --html=report.html --junitxml=report.xml
通过合理使用这些可选项,可以更好地控制和定制测试流程,使测试更具针对性和效率。