pytest ini
pytest.ini 是 Pytest 的配置文件之一,它用于集中管理测试的默认配置,避免在命令行重复输入参数。除了 pytest.ini,其他可选的配置文件包括 tox.ini 和 pyproject.toml。
pytest.ini 配置项
1. 基本结构
[pytest]
# 1. 添加默认的命令行选项
addopts = -v -s --tb=short
# 2. 指定测试文件目录(默认是当前目录)
testpaths = tests
# 3. 匹配测试文件的模式
python_files = test_*.py *_test.py
# 4. 匹配测试类
python_classes = Test*
# 5. 匹配测试函数
python_functions = test_*
# 6. 禁用特定警告
filterwarnings =
ignore::DeprecationWarning
2. 详细参数介绍
🔹 1. addopts - 额外的命令行选项
用于指定默认的 pytest 运行参数,例如:
[pytest]
addopts = -v -s --maxfail=3 --tb=short
-v:详细模式(verbose),显示更多信息-s:允许print()输出到终端--maxfail=3:如果出现 3 个失败,则停止运行--tb=short:显示精简的 traceback(回溯)
🔹 2. testpaths - 指定测试目录
默认情况下,pytest 会搜索当前目录下的测试文件。
可以使用 testpaths 限定 pytest 只在特定目录中查找测试:
[pytest]
testpaths = tests integration_tests
✅ 这意味着 pytest 只会在 tests/ 和 integration_tests/ 目录下寻找测试。
🔹 3. python_files - 指定测试文件匹配模式
默认情况下,pytest 认为 test_*.py 是测试文件。
可以自定义匹配模式:
[pytest]
python_files = test_*.py *_test.py mytest_*.py
✅ 这意味着 pytest 会识别 test_xxx.py、xxx_test.py 和 mytest_xxx.py 作为测试文件。
🔹 4. python_classes - 指定测试类匹配模式
默认情况下,pytest 只会识别以 Test 开头的类作为测试类。
可以自定义匹配:
[pytest]
python_classes = Test* Check*
✅ 这样 pytest 会识别 TestLogin 和 CheckAPI 作为测试类。
⚠ 注意:
- 类名 不能 以
test_开头,否则pytest不会执行其中的方法。
🔹 5. python_functions - 指定测试函数匹配模式
默认情况下,pytest 只会识别 test_ 开头的函数。
可以自定义匹配:
[pytest]
python_functions = test_* check_*
✅ 这样 pytest 会执行 test_login() 和 check_api_response() 作为测试函数。
🔹 6. filterwarnings - 过滤警告
如果你的测试代码里有 DeprecationWarning,可以忽略它:
[pytest]
filterwarnings =
ignore::DeprecationWarning
✅ 这样 pytest 不会再显示 DeprecationWarning。
🔹 7. log_cli - 启用 CLI 日志
让 pytest 在终端输出 logging 日志:
[pytest]
log_cli = true
log_cli_level = INFO
log_cli_format = %(asctime)s [%(levelname)s] %(message)s
log_cli_date_format = %Y-%m-%d %H:%M:%S
✅ 这样 pytest 会以 INFO 级别实时输出日志。
🔹 8. timeout - 设置测试超时时间
可以给 所有测试 设置超时时间:
[pytest]
timeout = 10 # 每个测试最多运行 10 秒
✅ 如果某个测试运行超过 10 秒,pytest 会强制终止它。
🔹 9. markers - 自定义标记
如果你使用 @pytest.mark.xxx 自定义标记,需要在 pytest.ini 里声明:
[pytest]
markers =
smoke: 重要的冒烟测试
regression: 回归测试
slow: 运行较慢的测试
然后在测试代码中使用:
import pytest
@pytest.mark.smoke
def test_login():
assert 1 + 1 == 2
✅ 这样你可以运行 pytest -m smoke 只执行 smoke 测试。
🔹 10. cache_dir - 缓存目录
指定 pytest 缓存测试结果的位置:
[pytest]
cache_dir = /tmp/pytest_cache
✅ 这样 pytest 会把缓存文件存到 /tmp/pytest_cache。
总结
| 选项 | 作用 |
|---|---|
addopts |
设置默认 pytest 运行参数 |
testpaths |
限定测试目录 |
python_files |
匹配测试文件 |
python_classes |
匹配测试类 |
python_functions |
匹配测试函数 |
filterwarnings |
过滤警告 |
log_cli |
终端日志输出 |
timeout |
设置超时时间 |
markers |
自定义标记 |
cache_dir |
指定缓存目录 |
你可以根据自己的测试需求配置 pytest.ini,让 pytest 更加智能化!🚀


浙公网安备 33010602011771号