命令行参数 | 描述 | 常见使用案例 |
---|---|---|
-v / --verbose | 显示每个测试用例的详细信息,包括测试名称和状态 | pytest -v |
-s / --capture=no | 禁用输出捕获,允许 print() 输出显示 | pytest -s |
-q / --quiet | 安静模式,减少输出,仅显示每个测试的通过/失败结果 | pytest -q |
-k <expression> | 根据指定的表达式运行匹配的测试,支持匹配测试函数名称或类名 | pytest -k "test_add" |
-m <markexpr> | 运行具有指定标记的测试,用于过滤测试,如 smoke 标记的测试 | pytest -m smoke |
--maxfail=<num> | 设置最大失败次数,超过次数则停止执行测试 | pytest --maxfail=3 |
--disable-warnings | 禁用警告信息输出 | pytest --disable-warnings |
--tb=<style> | 控制错误回溯的输出格式,选项包括 short 、long 、no 、line | pytest --tb=short |
--capture=<mode> | 控制标准输出捕获方式,no 禁用,fd 捕获标准输出和错误,sys 捕获标准输出等 | pytest --capture=no |
-p | 加载插件。用于在命令行中加载指定插件,如 -p no:warnings 禁用警告插件 | pytest -p no:warnings |
--runxfail | 标记预期会失败的测试。如果测试失败不会被计入总失败次数,如果通过则为错误 | pytest --runxfail |
--junitxml=<file> | 生成 JUnit XML 格式的测试报告,用于 CI/CD 集成 | pytest --junitxml=report.xml |
--html=<file> | 生成 HTML 格式的测试报告(需要安装 pytest-html 插件) | pytest --html=report.html |
--cov=<module> | 生成代码覆盖率报告(需要安装 pytest-cov 插件) | pytest --cov=my_module |
--ignore=<path> | 忽略指定的测试文件或目录。可以用于跳过不需要执行的测试 | pytest --ignore=tests/test_ignored.py |
--setup-show | 显示每个测试的 setup 和 teardown 步骤 | pytest --setup-show |
--trace | 追踪每个测试的执行顺序(适用于有复杂依赖关系的测试) | pytest --trace |
--fixtures | 列出当前项目中所有的 fixtures | pytest --fixtures |
-h | 显示 pytest 的帮助信息,列出所有可用的命令行参数 | pytest -h |
常见使用案例说明
-
显示详细信息:
-v
/--verbose
- 用途:在执行测试时显示详细的测试结果,包括每个测试的名称、结果(通过或失败)。
- 使用示例:
pytest -v
- 输出示例:
test_add.py::test_addition PASSED test_add.py::test_subtraction FAILED
-
禁用输出捕获:
-s
/--capture=no
- 用途:禁用 pytest 的输出捕获功能,确保
print()
输出会显示在控制台中。 - 使用示例:
pytest -s
- 输出示例:
Test started <stdout>: Some debug information
- 用途:禁用 pytest 的输出捕获功能,确保
-
按测试名称过滤:
-k
- 用途:只运行名称匹配指定表达式的测试函数,可以基于函数名进行灵活的过滤。
- 使用示例:
pytest -k "add"
- 说明: 运行名称中包含
add
的所有测试,如test_add
或test_addition
。
-
运行特定标记的测试:
-m
- 用途:运行所有带有特定标记的测试,如
smoke
、regression
等。 - 使用示例:
pytest -m "smoke"
- 说明: 只运行带有
@pytest.mark.smoke
标记的测试。
- 用途:运行所有带有特定标记的测试,如
-
最大失败次数:
--maxfail
- 用途:限制测试失败的最大次数,如果失败次数超过指定值,则停止测试执行。
- 使用示例:
pytest --maxfail=2
- 说明: 运行最多两个失败的测试,超过两次失败则停止执行。
-
禁用警告信息:
--disable-warnings
- 用途:禁用所有测试中的警告信息,保持输出简洁。
- 使用示例:
pytest --disable-warnings
- 输出示例:
Test passed
-
生成 HTML 报告:
--html
- 用途:生成 HTML 格式的测试报告,便于查看和分享测试结果。
- 使用示例:
pytest --html=report.html
- 说明: 生成一个
report.html
的测试报告。
-
跳过特定测试:
--ignore
- 用途:跳过指定的测试文件或目录,常用于忽略不需要执行的测试。
- 使用示例:
pytest --ignore=tests/test_ignored.py
-
生成 JUnit XML 报告:
--junitxml
- 用途:生成 JUnit XML 格式的报告,通常用于 CI/CD 集成。
- 使用示例:
pytest --junitxml=result.xml
-
指定测试覆盖率:
--cov
- 用途:生成代码覆盖率报告,用于分析测试覆盖了代码的哪些部分。
- 使用示例:
pytest --cov=my_module
通过结合这些命令行参数,pytest
可以在实际测试过程中提供更多灵活的控制和更详细的输出报告。