pytest.ini 配置文件详解:命令行选项、标记与目录规则

沈亦白
沈亦白
发布时间:2026-10-11| 2人浏览过
原创

pytest.ini 是 pytest 框架的全局配置文件,允许开发者在执行测试时覆盖默认行为。通过该文件,可以自定义命令行选项、注册测试标记、指定测试目录及忽略路径,并调整测试文件的搜索规则,从而提升测试执行的效率与规范性。

1. 自定义命令行默认选项

在 [pytest] 节下使用 addopts 参数,可以设定每次运行 pytest 时自动应用的默认命令行选项。这有助于统一团队的测试报告风格和执行行为。

[pytest]
addopts = -rsxX -l --tb=short --strict

上述配置包含以下效果:

  • -rsxX:在报告中显示跳过(s)、预期失败(x)和失败(X)的状态。
  • -l:当测试失败时,显示局部变量的值,便于调试。
  • --tb=short:简化堆栈回溯信息的输出,使日志更简洁。
  • --strict:启用严格模式,禁止使用未注册的标记,防止拼写错误导致的测试遗漏。

2. 注册与使用测试标记

标记(markers)用于对测试用例进行分类。在 pytest.ini 中注册标记后,pytest 会自动识别它们,并通过 pytest --markers 查看当前所有可用标记。使用 pytest -m <标记名> 即可执行特定标记的测试。

[pytest]
markers =
    smoke: Run the smoke test functions for tasks project  #格式为  标记:注释
    get: Run the test functions that test tasks.get()

注意,若启用了 --strict 选项,使用未在此处注册的标记会导致 pytest 报错。因此,所有自定义标记都应预先注册。

3. 指定 pytest 最低版本

通过 minversion 参数,可以指定运行测试所需的 pytest 最低版本号。如果当前安装的 pytest 版本低于此值,测试将不会执行。

[pytest]
minversion = 4.0

4. 指定测试目录与忽略路径

默认情况下,pytest 会搜索当前目录下的所有测试文件。通过 testpaths 可以指定特定的测试目录,从而缩小测试范围。

[pytest]
testpaths = test_001

同时,可以使用 norecursedirs 指定需要忽略的目录。当同时指定 testpaths 和 norecursedirs 时,testpaths 中的内容优先执行,但 norecursedirs 指定的目录仍会被排除。

[pytest]
norecursedirs = .* venv test_001 *.egg dist build

5. 调整测试搜索规则

pytest 默认查找 test_*.py 或 *_test.py 文件,以及以 test_ 开头的函数。可以通过以下配置自定义这些规则:

  • python_classes:定义测试类的命名模式,例如 *Test、Test* 或 *Suite。
  • python_files:定义测试文件的命名模式,例如 test_*、*_test 或 check_*。
  • python_functions:定义测试函数的命名模式,例如 test_* 或 check_*。
[pytest]
python_classes = *Test Test* *Suite
python_files = test_* *_test check_*
python_functions = test_* check_*

6. 其他配置项

禁用 xpath:设置 xfail_strict = true 可使实际通过的 xfail(预期失败)用例报告为失败,确保测试的严格性。

配置日志:通过 log_cli 参数控制日志输出。默认值为 False 或 0,设置为 True 或 1 可启用命令行日志输出。

以上就是 pytest.ini 配置文件的详细内容,更多关于 Python 测试框架优化的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。