фикстуры с областью видимости модуля 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
- это требуется, потому что, если этот прибор вызывается первым, тестовая база данных не будет настроена и прибор будет создан в не тестовой базе данных !
Для сложных объектов, имеющих более одной или двух связанных моделей, приспособление становится очень уродливым.
Есть ли лучший способ сделать это?