Как передать параметры в прибор и использовать его в тестовом методе? - PullRequest
0 голосов
/ 15 ноября 2018

Я хочу передать имя пользователя, пароль и адрес электронной почты в качестве параметров прибора здесь:

@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"""

Как я могу это сделать? Спасибо!

1 Ответ

0 голосов
/ 18 ноября 2018

Попробуйте заводское приспособление:

@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
...