我有一个 TestSecured 类,其中有一些方法可以获取受保护的端点,因此您需要一个 jwt 来发出请求。我正在尝试优化我的测试类,这样我就不需要登录过程 3 次,而只需要 1 次,并在我的 3 次测试方法中使用相同的令牌。
@pytest.mark.usefixtures("client", "auth", "setup_user_and_token")
class TestSecured:
def test_get_operations(self, client, setup_user_and_token):
# headers = {'Authorization' : f'Beare {setup_user_and_token}'}
response = client.get(f'{SECURED_ROUTE}get-operations', headers=setup_user_and_token)
assert response.status_code == 200
def test_post_operation(self, client, auth):
return "ok"
def test_post_ope2(self,client,auth):
print("ok")
如果我使用我创建的 setup_user_and_token 固定装置在每个方法中设置标头,它就会起作用。
@pytest.fixture(scope="class")
def setup_user_and_token(auth):
response = auth.login()
token = response.get_json()['access_token']
return {'Authorization' : f'Bearer {token}'}
但我想使用 setup_class() 只执行一次。我怎样才能实现这个目标?
您可以向测试类添加固定装置并在那里使用固定装置
class TestSecured:
@pytest.fixture(scope="class", autouse=True)
def setup_class(self, setup_user_and_token, client, auth):
TestSecured.__setup_user_and_token = setup_user_and_token
TestSecured.__client = client
TestSecured.__auth = auth
def test_get_operations(self):
# headers = {'Authorization' : f'Beare {setup_user_and_token}'}
response = client.get(f'{SECURED_ROUTE}get-operations', headers=self.__setup_user_and_token)
assert response.status_code == 200
您还应该删除
usefixtures
标记,您可以使用它或直接调用灯具,请参阅参考。