首页 > 解决方案 > 如何设置pytest类的类实例变量

问题描述

我按照这里的答案解决了我在 pytest 类中访问类实例变量的问题,方法是通过autouse夹具设置它们。

代码:

import pytest

@pytest.fixture(autouse=True, scope='class')
def setup(request):
    request.cls.number = 4
    request.cls.id = 0


class TestResources(object):

    def test_01(self):
        a = self.number * 4
        assert a == 16
        self.id = a

    def test_02(self):
        assert self.id == 16
        print(self.id)

但是,我可以通过这种方法访问一个类变量集,但不能通过测试为其设置另一个值?

在上面的示例中,由于无法设置而失败test_02并出现以下断言错误。test_01self.a = 16

E       assert 0 == 16
E        +  where 0 = <test_a.TestResources object at 0x7f918e83da30>.id

我找到了一种解决方法,我可以添加request到 test_01 参数并再次设置它,如下所示,但这超出了上课的目的。

    def test_01(self, request):
        a = self.number * 4
        assert a == 16
        request.cls.id = a

有一个更好的方法吗?

标签: pythonpython-3.xclasspytest

解决方案


推荐阅读