超级实用!汇总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
相关推荐
Beaman10248 小时前
pytest框架
python·pytest
charlie1145141911 天前
编写INI Parser 测试完整指南 - 从零开始
开发语言·c++·笔记·学习·算法·单元测试·测试
昔时扬尘处1 天前
【Files Content Replace】文件夹文件内容批量替换自动化测试脚本
c语言·python·pytest·adi
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 32--开源电商商城系统项目实战--如何区分登录状态
python·学习·测试工具·pytest
路修远i1 天前
前端单元测试
前端·单元测试
昔时扬尘处1 天前
如何检测python和pytest的安装环境
开发语言·python·pytest·自动化测试平台·adi
我的xiaodoujiao1 天前
使用 Python 语言 从 0 到 1 搭建完整 Web UI自动化测试学习系列 33--基础知识 8--切换窗口句柄
python·学习·测试工具·pytest
测试人社区-千羽2 天前
48小时攻克测试岗——闪电面试极速备战手册
人工智能·python·opencv·面试·职场和发展·单元测试·压力测试
力江2 天前
FastAPI 最佳架构实践,从混乱到优雅的进化之路
python·缓存·架构·单元测试·fastapi·分页·企业