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

posted @ 2021-09-29 16:21  xyztank  阅读(258)  评论(0编辑  收藏  举报