1 回答
TA贡献1829条经验 获得超7个赞
如果您使用具有类作用域的夹具,则self参数不引用类实例。但是,您仍然可以使用 访问类本身self.__class__,因此您可以从实例变量创建类变量。
您的代码可能如下所示:
import pytest
from faker import Faker
from projects import UsersSupport
from projects import users_payload
class TestCreateUser:
@pytest.fixture(autouse=True, scope='class')
def setup_class(self, env):
self.__class__.users_support = UsersSupport(env)
self.__class__.fake = Faker()
self.__class__.create_user_payload = users_payload.create_user_payload
def test_create_user(self):
created_user_res = self.users_support.create_user(
payload=self.create_user_payload
).json() # now you access the class variable
print(created_user_res)
在测试期间,为每个测试创建一个新的测试实例。
如果你有一个默认函数范围的夹具,它将在测试的同一个实例中被调用,这样self夹具的参数和当前测试引用同一个实例。
在类范围的夹具的情况下,设置代码在创建测试实例之前在单独的实例中运行——这个实例必须一直存在到所有测试结束才能执行拆卸代码,所以它不同于所有测试实例。由于它仍然是同一测试类的实例,因此在这种情况下您可以将变量存储在测试类中。
添加回答
举报