pytest有独属于自己的配置文件pytest.ini,属于全局配置。在执行时可以改变pytest的默认配置
pytest.ini文件作用如下:
- 修改用例的命名规则
- 配置日志格式,比代码配置更方便
- 添加标签,防止运行过程报警告错误
- 指定执行目录
- 排除搜索目录
1. 改变默认命令行选项
[pytest] addopts = -rsxX -l --tb=short --strict
--rsxX表示pytest报告所有测试用例被跳过、预计失败、预计失败但实际通过的原因;
-l 表示pytest报告所有失败测试的堆栈中的局部变量;
--tb=short表示简化堆栈回溯信息,只保留文件和行数;
--strict选项表示禁止使用未在配置文件中注册的标记。
2. 注册标记
自定义标记,运行时pytest自动创建标记。
[pytest] markers = smoke: Run the smoke test functions for tasks project #格式为 标记:注释 get: Run the test functions that test tasks.get()
在程序中可以通过 pytest --markers 查看所有注册的标记,通过pytest -m 标记名 执行标记
在pytest执行命令时,添加--strict 参数,遇到拼写错误的标记或未注册的标记就会报错
3. 指定pytest的最低版本号
[pytest] minversion = 4.0
4. 指定测试目录,不指定测试目录则执行所有文件
[pytest] testpaths = test_001
5. 指定忽略某些目录
[pytest] norecursedirs = .* venv test_001 *.egg dist build
如果同时指定了testpaths和 norecursedirs,则testpaths中的内容优先执行
6. 更改测试搜索规则
pytest的搜索规则如下:
1. 从所有或者指定目录中查找;目录可以通过命令行指定
2. 测试模块是指文件名为test_*.py或*_test.py的文件
3. 在测试模块中查找以test_开头的函数名
4. 查找名字以Test开头的类,其中,首先筛选掉包含__init__函数的类,在查找类中以Test_开头的类方法
测试类搜索方式更改如下:
[pytest] python_classes = *Test Test* *Suite
测试文件搜索方式更改如下:
[pytest] python_files = test_* *_test check_*
测试方法搜索方式更改如下:
[pytest] python_functions = test_* check_*
7.禁用xpath
设置xfail_strict = true将会使那些被标记为@pytest.mark.xfail但实际通过的测试用例也被报告为失败
[pytest]
xfail_strict = true
8. 配置日志
格式:log_cli = True 或 False(默认),或者 log_cli = 1 或 0
[pytest]
log_cil=True