Pytest配置文件
配置文件
pytest.ini
pytest的主配置文件,可以改变pytest的默认行为,通常放在测试目录下,名称为pytest.ini,命令行运行时会使用该配置文件中的配置.
pytest.ini 文件内容如下:
[pytest]
addopts = -s -v ... #设置命令行参数 空格分隔,可添加多个命令行参数
testpaths = ./scripts #配置测试搜索的路径 当前目录下的scripts文件夹 -可自定义
python_files = test*.py #配置测试搜索的文件名称 当前目录下的scripts文件夹下,以test开头,以.py结尾的所有文件 -可自定义
python_classes = Test_* #配置测试搜索的测试类名 当前目录下的scripts文件夹下,以test开头,以.py结尾的所有文件中,以Test开头的类 -可自定义
python_functions = test_* #配置测试搜索的测试函数名 当前目录下的scripts文件夹下,以test开头,以.py结尾的所有文件中,以Test开头的类内,以test_开头的方法 -可自定义
conftest.py
本地的插件库,其中hook函数和fixture将作用于改文件所在的目录及所有的子目录
_init_.py
每个测试子目录都包含该文件时,那么在多个测试目录中可以出现同名测试文件
tox.int
与pytest.int类似,只是它是tox的配置文件。我们可以保pytest的配置都写在tox.ini里面,这样就不用同时使用tox.ini和pytest.ini。
... tox specific stuff ...
[pytest]
addopts = -s -v ... #设置命令行参数 空格分隔,可添加多个命令行参数
...
setup.cfg
如果想要发布一个python包,这个文件很有用。setup.cfg采用ini的文件格式。可以影响setup.py的行为。若想要发布包,也可以用其来存储pytest的配置信息。
... packaging specific stuff ...
[tool:pytest]
addopts = -s -v ... #设置命令行参数 空格分隔,可添加多个命令行参数
...
常用配置项
查看可配置选项
可以使用pytest --help 查看所有的配置选项,如图所示:
常用的配置项
- 更改默认命令行选项
[pytest] addopts = -s -v -n auto ... #设置命令行参数 空格分隔,可添加多个命令行参数
- 注册标记来防范拼写错误
[pytest] markers= test_demo1_test01:run test_demo1_test01() test_demo1_test01:run test_demo1_test02()
可以使用 pytest --markers 查看markers
-
指定pytest的最低版本
```bash [pytest] minversion=3.0 ```
如果有人使用老版本(小于3.0)pytest运行测试,就会得到一个报错信息
-
指定pytest忽略某些目录
pytest执行搜索时,会递归遍历所有子目录。
可以使用norecurse选项简化pytest的搜索工作,告诉pytest那些路径不用访问。例如:设置src目录不是默认搜索[pytest] norecursedirs = src
-
指定测试目录(告诉pytest需要访问那些目录)
testpaths 是一系列相对于根目录的路径,用于限定测试用例的搜索范围。只有在pytest未指定文件目录参数或测试用例标识符时,该选项才会启用。[pytest] testpaths = ./scripts #配置测试搜索的路径 当前目录下的scripts文件夹 -可自定义
-
更改搜索规则
[pytest] python_files = test*.py #配置测试搜索的文件名称 当前目录下的scripts文件夹下,以test开头,以.py结尾的所有文件 -可自定义 python_classes = Test_* #配置测试搜索的测试类名 当前目录下的scripts文件夹下,以test开头,以.py结尾的所有文件中,以Test开头的类 -可自定义 python_functions = test_* #配置测试搜索的测试函数名 当前目录下的scripts文件夹下,以test开头,以.py结尾的所有文件中,以Test开头的类内,以test_开头的方法 -可自定义
-
禁用xpass
[pytest] xfail_strict = ture
xfail_strict = ture 会将那些被标记为@pytest.mark.xfail的但实际运行通过的用例也被报告为失败。所以这个选项建议一直保持。
-
避免文件名冲突
在测试路径下添加__init__.py文件,可以在多个测试目录中使用同名测试文件