以下是 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