如何将参数传递给fixture并在测试方法中使用该fixture?

2024-04-23 22:53:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在这里传递用户名、密码和电子邮件作为fixture参数:

@pytest.fixture()
def create_user(self):
    try:
        assert self.rbac.put_user(username, password, email).status_code == 200
        yield
    except AssertionError:
        assert self.rbac.get_user(username).status_code == 200
        yield
    finally:
        assert self.rbac.delete_user(username).status_code == 200

稍后我将在测试中使用此夹具:

@pytest.mark.usefixtures("create_user")
def test_assign_delete_user_to_group(self):
"""some code"""

我该怎么做?谢谢!你知道吗


Tags: self密码pytestdefstatuscreateusernamecode
1条回答
网友
1楼 · 发布于 2024-04-23 22:53:45

尝试工厂夹具:

@pytest.fixture()
def user_factory(self, request):
    created_users = []

    def create_or_get_user(username):
        try:
            assert self.rbac.put_user(username, password, email).status_code == 200
        except AssertionError:
            assert self.rbac.get_user(username).status_code == 200
        created_users.append(username)

    yield create_or_get_user

    for username in created_users:
        assert self.rbac.delete_user(username).status_code == 200

然后用它和

def test_assign_delete_user_to_group(self, user_factory):
    """some code"""
    u = user_factory('foo')
    assert u

相关问题 更多 >