PyTest之自定义测试发现
PyTest有一个特别的设计,叫作测试用例自动发现(Test Discovery)机制,允许我们不指定具体的测试用例源文件,而是根据一些命名规则去自动发现测试用例源文件,以及在源文件中筛选待执行的测试函数。默认情况下,测试发现机制是按如下规则执行:
测试用例文件名以test_*.py开头(以_test结尾也可以)
测试类以Test*开头并且不能带有_init_方法
测试类方法以test_*开头
1、测试文件
PyTest默认从当前路径及其所有子目录中搜索py源文件,所有名字以test_
开头或者以_test结尾的python源文件(.py文件)被认为是测试模块源文件,不符合这个命名规则的文件会被忽略。
2、测试函数
在测试模块源文件中,所有以“test”(注意是test,不是test_)开头的函数被PyTest认为是测试函数而被执行,不符合这个条件的函数会被忽略。
3、自定义发现
可以在pytest.ini
配置文件中,自定义测试发现的规则。比如,修改为pytest自动搜索xyz_开头的py文件,以xyz
开头的函数。如下所示:
在配置文件pytest.ini
中修改配置:
[pytest]
python_files = xyz_*.py
python_classes = xyz
python_functions = xyz_*
如图所示:
运行脚本后,只收集到xyz_
开头的测试函数,如图所示:
代码:
import pytest
@pytest.mark.ini
class xyzMyCode:
def xyz_ini_001(self):
print("========这是xyz开头的测试函数========")
assert 1 == 1
def test_ini_001(self):
print("========这是test开头的测试函数========")
assert 1 == 1