pytest的fixture当scope为class时遇到的问题

import pytest

class TestClass:

# class级别fixture
@pytest.fixture(scope='class',autouse=True)
def cls_fixture(self):
    self.name = 'haha'
    print('class级别fixture,前置步骤')
    print(self)
    print(self.name)
    yield
    print('class级别fixture,后置步骤')

def test_a(self):
    print(self.name)
    print('运行测试a')

def test_b(self):
    print('运行测试b')

def test_c(self):
    print('运行测试c')

if name == ‘main’:
pytest.main([’-v’, ‘-s’,’–setup-show’])

代码如上,想利用@pytest.fixture()实现一些初始化,当scope='class’时,用例 test_a 并不能拿到 cls_fixture 里定义的 self.name,报错 AttributeError: ‘TestClass’ object has no attribute ‘name’,这是为啥呢,我的理解应该是在执行test_a之前,会执行cls_fixture的yield之前的代码,为啥会拿不到name呢。试过 scope='function’时没问题,但是觉得如果scope='function’初始化有点重复了,求解

关闭