PYTEST中conftest.py和@pytest.fixture()结合使用实现全局的前置应用

3 篇文章 0 订阅
2 篇文章 0 订阅

一:conftest.py和@pytest.fixture()结合使用实现全局的前置应用主要有以下特点:

    1.conftest.py文件是单独存放的一个夹具配置文件,名称是不能更改

    2.用处可以在不同的py文件中使用同一个fixture

    3.原则上conftest.py需要和运行的用例放到统一层,并且不需要做任何的import导入的操作

    总结:

    setup/teardown,setup_class/teardown_class,它是作用于所有用例或所有的类

    @pytest.fixture(),它的作用是既可以部分也可以全部前后置

    conftest.py和@pytest.fixture()结合使用,作用于全局的前后置

实现局部的前置应用
测试用例的目录结构如下:
demo1-
    test_func1.py
    test_func2.py
    conftest.py
conftest.py
demo1文件夹下包含三个py文件,分别是两个测试用例,和一个conftest.py文件

demo1文件夹内的conftest.py的内容如下:
import pytest

@pytest.fixture(scope='function',params=['alex1','alex2'],autouse=False)
def my_fixture(request):
    print('这是前置内容')
    yield request.param
    print('这是后置内容')

test_func1.py的内容如下:
class Testdemo3():

    def test_01(self,my_fixture,all_fixture):
        print('这是test01',my_fixture,all_fixture)

    def test_02(self,all_fixture,my_fixture):
        print('这是test02',my_fixture,all_fixture)


外部的conftest.py的内容如下:
import pytest

@pytest.fixture()
def all_fixture():
    print('这是全局前置')
    yield
    print('这是全局后置')

运行测试用例的结果如下:
testcase/demo1/test_func3.py::Testdemo3::test_01[alex1] 这是前置内容
这是全局前置
这是test01 alex1 None
PASSED这是全局后置
这是后置内容

testcase/demo1/test_func3.py::Testdemo3::test_01[alex2] 这是前置内容
这是全局前置
这是test01 alex2 None
PASSED这是全局后置
这是后置内容

testcase/demo1/test_func3.py::Testdemo3::test_02[alex1] 这是全局前置
这是前置内容
这是test02 alex1 None
PASSED这是后置内容
这是全局后置

testcase/demo1/test_func3.py::Testdemo3::test_02[alex2] 这是全局前置
这是前置内容
这是test02 alex2 None
PASSED这是后置内容
这是全局后置

从上面test01和test02中可以看到出入的全局fixture和局部fixture的实现结果,哪个在前面,先调用哪个,所以某种程度上,也是有一定执行顺序的,并不是全局conftest或者局部conftest先执行之类的。

二:下面说下pytest中conftest.py作用范围

        一个测试工程下面可以有多个conftest.py文件,一般在工程根目录放一个conftest起到全局作用,在不同的测试子目录也可以放conftest,作用范围只在该层级以及以下目录生效。

        例如上述中demo1下面的conftest.py,它的作用域就是这个demo1目录下面的所有testcase,而demo1文件夹外面的conftest.py,它的作用域就可以针对所有的测试用例。

        所以,具体使用局部还是全局,按照实际情况自行决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值