Pytest и Django, правильный метод для создания фикстур с областью видимости модуля - PullRequest
2 голосов
/ 08 июля 2020

фикстуры с областью видимости модуля pytest, которые используют тестовую базу данных django, сбивают нас с толку. Нам нужен прибор, который создает запись в базе данных один раз для каждого тестового модуля.

Это работает, но очень неудобно:

import pytest

@pytest.fixture(scope='module')
def site(django_db_setup, django_db_blocker):
    with django_db_blocker.unblock():
        address = models.Address.create(..)
        site = models.Site.create(address=address, ..)

    yield site

    with django_db_blocker.unblock():
        site.delete()
        address.delete()

Мы заметили, что django_db_setup - это требуется, потому что, если этот прибор вызывается первым, тестовая база данных не будет настроена и прибор будет создан в не тестовой базе данных !

Для сложных объектов, имеющих более одной или двух связанных моделей, приспособление становится очень уродливым.

Есть ли лучший способ сделать это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...