Что в pytests эквивалентно setUpTestData в Django?
Я видел TestCase.setUpTestData, который довольно сильно повышает скорость тестирования в моем случае.
Обычно я предпочитаю использовать фикстуры pytest, а не классы TestCase. Однако, когда я создаю фикстуру с охватом сессии, которая выполняет подготовку данных, необходимую для всех тестов с этой фикстурой, я получаю
RuntimeError: Доступ к базе данных не разрешен, используйте метку «django_db» или фиксы «db» или «transactional_db», чтобы разрешить его.
Я выполнил команду https://stackoverflow.com/a/72261942/29412366, но это не дало никакого эффекта.
Как хранить и повторно использовать состояние БД в приложении Django при тестировании с помощью pytest?
Я использую БД in-memory sqlite3.
Я попробовал https://stackoverflow.com/a/72261942/29412366 :
@pytest.mark.django_db
@pytest.fixture(scope='session')
def thing(django_db_setup, django_db_blocker):
del django_db_setup # Cannot be used with usefixtures(..) it won't work
with django_db_blocker.unblock():
print('sleeping')
Thing.objects.create(thing='hello')
и ожидал, что тест будет успешно выполнен + сэкономлено время. Вместо этого я получил ошибку RuntimeError, о которой говорилось выше.
(фиксы, скопированные на функцию, работают нормально, но тогда я не экономлю время выполнения теста)