超级实用!汇总pytest中那些常用的参数

刚开始使用pytest的同学,可能感觉最复杂的点就是其提供的各种参数,丰富的命令行参数在带来了灵活控制测试行为的同时也增加了对于新手的上手难度。在这里,我总结了一下pytest常用参数的分类,并提供详细的使用方法!

如果读者是pytest小白,可以参考下面的文章,快速上手pytest:

用最精简的例子带您快速了解Pytest框架中最核心的功能-CSDN博客

一、基础运行参数

  1. 指定运行范围

    • pytest <路径>

      运行指定目录或文件中的测试(默认当前目录)。

      复制代码
      pytest tests/              # 运行 tests 目录下的所有测试
      pytest test_api.py         # 运行单个文件
      pytest tests/test_math.py::test_add  # 运行特定测试函数
  2. -v / --verbose

    显示详细输出(包括每个测试用例的名称和结果)。

    复制代码
    pytest -v
  3. -s / --capture=no

    禁用输出捕获,直接打印测试中的 print 或日志信息。

    复制代码
    pytest -s
  4. -k <表达式>

    通过名称匹配测试用例(支持逻辑运算符 and/or/not)。

    复制代码
    pytest -k "add and not multiply"  # 运行名称包含 add 但不含 multiply 的测试
  5. -m <标记>

    运行带有特定标记的测试用例(需提前用 @pytest.mark 标记)。

    复制代码
    pytest -m "smoke or regression"  # 运行标记为 smoke 或 regression 的测试

二、失败处理参数

  1. -x / --exitfirst

    遇到第一个失败用例后立即停止测试。

    复制代码
    pytest -x
  2. --lf / --last-failed

    仅重新运行上次失败的测试。

    复制代码
    pytest --lf
  3. --ff / --failed-first

    先运行上次失败的测试,再运行其他测试。

    复制代码
    pytest --ff
  4. --pdb

    在测试失败时自动进入调试模式(需安装 pdb)。

    复制代码
    pytest --pdb

三、输出与报告

  1. --tb=<style>

    控制失败时的堆栈跟踪信息格式,常用选项:

    • --tb=short:简洁显示错误信息

    • --tb=line:仅显示错误行

    • --tb=no:不显示堆栈跟踪

    复制代码
    pytest --tb=short
  2. -q / --quiet

    简化输出,仅显示总体结果。

    复制代码
    pytest -q
  3. --junitxml=<path>

    生成 JUnit 格式的 XML 测试报告(常用于 CI/CD)。

    复制代码
    pytest --junitxml=results.xml
  4. --html=<path>

    生成 HTML 测试报告(需安装 pytest-html)。

    复制代码
    pytest --html=report.html

四、并发与性能

  1. -n <num> / --numprocesses=<num>

    使用多进程并行运行测试(需安装 pytest-xdist)。

    复制代码
    pytest -n 4  # 使用4个进程并行执行
  2. --durations=<num>

    显示最耗时的 N 个测试用例。

    复制代码
    pytest --durations=10  # 显示最慢的10个测试

五、覆盖率与配置

  1. --cov=<path>

    生成代码覆盖率报告(需安装 pytest-cov)。

    复制代码
    pytest --cov=src  # 统计 src 目录的覆盖率
  2. -c <file>

    指定自定义配置文件(默认使用 pytest.ini)。

    复制代码
    pytest -c custom_config.ini

六、常用参数组合示例

复制代码
# 常用组合:详细输出 + 打印日志 + 快速失败
pytest -v -s -x

# 运行标记为 smoke 的测试,并生成 HTML 报告
pytest -m smoke --html=report.html

# 并行运行测试并生成覆盖率报告
pytest -n 4 --cov=src --cov-report=html

最常用参数总结

参数 用途说明 示例
-v 显示详细测试结果 pytest -v
-s 打印测试中的输出(如 print pytest -s
-k <表达式> 按名称筛选测试用例 pytest -k "login"
-m <标记> 按标记运行测试 pytest -m "smoke"
-x 遇到失败立即停止 pytest -x
--lf 仅重跑上次失败的用例 pytest --lf
--tb=short 简化错误堆栈信息 pytest --tb=short
--durations 统计测试耗时 pytest --durations=5
--cov 生成代码覆盖率报告 pytest --cov=src
相关推荐
许彰午13 天前
39_Java单元测试JUnit入门
java·junit·单元测试
果子耶耶13 天前
让大模型帮我写单元测试,5个模型的覆盖率和边界处理能力实测
chatgpt·单元测试
糖果店的幽灵14 天前
软件测试接口测试从入门到精通:Python接口自动化 - pytest测试框架
软件测试·python·功能测试·自动化·pytest·接口测试
川石课堂软件测试14 天前
APP自动化测试|高级手势操作&toast操作
css·功能测试·测试工具·microsoft·fiddler·单元测试·harmonyos
2601_9618752414 天前
花生十三资料1200题|题库|刷题
conda·pytest·pillow·pip·web3.py·ipython·gunicorn
某人辛木14 天前
Web自动化测试
前端·python·pycharm·pytest
Thecozzy16 天前
单元测试 vs 手工测试:以水印功能为例
单元测试
淡漠的蓝精灵17 天前
pytest-xdist:把 pytest 测试分发到多核 CPU 执行
其他·pytest
HLAIA光子17 天前
AI Coding框架,打好TDD和SDD这两拳
单元测试·ai编程·代码规范