超级实用!汇总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
相关推荐
旦莫1 天前
Pytest教程:Pytest与主流测试框架对比
人工智能·python·pytest
叶落无痕522 天前
Electron应用自动化测试实例
前端·javascript·功能测试·测试工具·electron·单元测试
汽车仪器仪表相关领域2 天前
工况模拟精准检测,合规减排赋能行业 ——NHASM-1 型稳态工况法汽车排气检测系统项目实战经验分享
数据库·算法·单元测试·汽车·压力测试·可用性测试
程序员三藏2 天前
接口自动化测试之 pytest 接口关联框架封装
自动化测试·软件测试·python·测试工具·测试用例·pytest·接口测试
码农水水2 天前
大疆Java面试被问:TCC事务的悬挂、空回滚问题解决方案
java·开发语言·人工智能·面试·职场和发展·单元测试·php
卓码软件测评2 天前
CMA-CNAS软件测评报告机构【Apifox动态Mock响应处理复杂业务逻辑设计】
测试工具·性能优化·单元测试·测试用例
孙琦Ray2 天前
GitHub开源项目日报 · 2026年1月7日 · 本期热门开源全景
单元测试·开源·前端调试·浏览器自动化·知识管理·ai代理·跨语言序列化
程序员三藏2 天前
单元测试详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
卓码软件测评3 天前
CMA/CNAS双资质软件测评机构【Apifox高效编写自动化测试用例的技巧和规范】
测试工具·ci/cd·性能优化·单元测试·测试用例
回眸&啤酒鸭3 天前
【回眸】Tessy 单元测试软件使用指南(五)进阶报错之解决指南(含泪整理)
单元测试