pytest配置文件可以改变pytest的运行方式,它是一个固定的文件pytest.ini文件,读取配置信息,按指定的方式去运行。
pytest里面有些文件是非test文件
pytest.ini pytest的主配置文件,可以改变pytest的默认行为
conftest.py 测试用例的一些fixture配置
__init__.py 识别该文件为python的package包
tox.ini 与 pytest.ini类似,用tox工具时候才有用
setup.cfg 也是ini格式文件,影响setup.py的行为
以下是一些常用的配置:
1、addopts 设置自定义执行参数
代码如下(示例):
[pytest]
# 命令行参数,用空格分隔
addopts = -v -s --reruns 1 --html=report.html
说明:
–reruns: 失败重跑次数
–count: 重复执行次数
-v: 显示错误位置以及错误的详细信息
-s: 等价于 pytest --capture=no 可以捕获print函数的输出
-q: 简化输出信息
-m: 运行指定标签的测试用例
-x: 一旦错误,则停止运行
–maxfail: 设置最大失败次数,当超出这个阈值时,则不会在执行测试用例
–html=report.html 生成测试报告
注意:当ini配置文件的参数与run文件里的命令参数重复时,命令行的参数值会覆盖ini配置文件中定义的参数值
2、更改测试用例收集规则
pytest默认的测试用例收集规则
文件名以 test_*.py 文件和 *_test.py
以 test_ 开头的函数
以 Test 开头的类,不能包含 __init__ 方法
如果需要修改这些规则,可以在pytest.ini文件中加入以下配置:
多个匹配规则以空格分开
[pytest]
#测试用例收集规则
python_files = test_*.py *_test.py # 文件名
python_classes = Test* # 类
python_functions = test_* # 函数
3、testpaths–设置用例执行目录
[pytest]
# 读取测试用例的起始文件夹,多个路径用空格分隔。
注意:这些目录下不能出现相同文件名,否则会报错
testpaths = ./testcase
4、norecursedirs-排除某些用例搜索目录
[pytest]
norecursedirs = venv report util log #排除指定用例搜索目录
5、markers–标记分组参数
[pytest]
markers =
smoking :
high :
medium :
lower :
测试用例中标识,运行pytest -v -m smoking,只执行含有smoking标记的测试用例
代码如下(示例):
@pytest.mark.smoking
def test_01():
pass
6、禁用XPASS
设置xfail_strict = True可以让那些标记为@pytest.mark.xfail 实际通过显示XPASS的测试用例被报告为失败。
[pytest]
xfail_strict=False
7、指定pytest最低版本
[pytest]
minversion = 7.0
8、log_cli控制台实时输出日志
格式: log_cli=True 或 log_cli=False (默认),或者 log_cli=1 或 log_cli=0
[pytest]
log_cli=True
详细日志设置,如下:
[pytest]
log_cli=True #日志开关
log_file = pytest.log #日志文件
log_file_level = INFO #日志级别
log_file_format = %(asctime)s | %(filename)s | %(funcName)s | line:%(lineno)d | %(levelname)s | %(message)s #日志文件格式
log_file_date_format = %Y-%m-%d %H:%M:%S #日志文件中时间戳的格式