Повторное использование прибора Pytest в том же тесте - PullRequest
0 голосов
/ 13 июня 2018

Ниже приведен пример кода теста, в котором для настройки теста используется прибор user.

@pytest.fixture
def user():
    # Setup db connection
    yield User('test@example.com')
    # Close db connection

def test_change_email(user):
    new_email = 'new@example.com'
    change_email(user, new_email)
    assert user.email == new_email

Существует ли способ создания нескольких пользовательских объектов в одном тесте с использованием одного прибора, еслиНапример, я хотел добавить функциональность для массового изменения электронных писем пользователей, и перед тестом мне потребовалось 10 пользователей?

1 Ответ

0 голосов
/ 13 июня 2018

Документация Pytest содержала раздел " factory as fixtures ", который решил мою проблему.

Этот пример, в частности (скопирован / вставлен по ссылке):

@pytest.fixture
def make_customer_record():

    created_records = []

    def _make_customer_record(name):
        record = models.Customer(name=name, orders=[])
        created_records.append(record)
        return record

    yield _make_customer_record

    for record in created_records:
        record.destroy()


def test_customer_records(make_customer_record):
    customer_1 = make_customer_record("Lisa")
    customer_2 = make_customer_record("Mike")
    customer_3 = make_customer_record("Meredith")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...