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夾具的參數和當前測試引用同一個實例。
在類范圍的夾具的情況下,設置代碼在創建測試實例之前在單獨的實例中運行——這個實例必須一直存在到所有測試結束才能執行拆卸代碼,所以它不同于所有測試實例。由于它仍然是同一測試類的實例,因此在這種情況下您可以將變量存儲在測試類中。
添加回答
舉報