Вы не можете назначить атрибуты экземпляра теста в осциллографе класса. Пока setup
является функциональным прибором, все в порядке, потому что оно выполняется для каждого экземпляра TestExample
. Как только прибор получает область действия класса, назначение атрибутов экземпляра больше не работает - setup()
и test_foo()
вызываются в разных TestExample
экземплярах. Использование явных атрибутов в области класса, например,
class TestExample:
b = 1.0
@pytest.fixture(autouse=True, scope='class')
def setup(self, fixture_a):
self.__class__.c = self.b * fixture_a
или
class TestExample:
b = 1.0
@staticmethod
@pytest.fixture(autouse=True, scope='class')
def setup(fixture_a):
TestExample.c = TestExample.b * fixture_a
или
class TestExample:
b = 1.0
@pytest.fixture(autouse=True, scope='class')
def setup(self, request, fixture_a):
request.cls.c = request.cls.b * fixture_a
В последнем примере показано, что устройство класса не является требуется быть частью тестового класса:
@pytest.fixture(autouse=True, scope='class')
def setup_cls(request, fixture_a):
request.cls.c = request.cls.b * fixture_a
class TestExample:
b = 1.0
...