Почему Factory Boy заполняет локальную БД вместо тестовой БД
Я настроил ~100 юнит-тестов для приложения django, и позже понял, что каждый юнит-тест создает тестовых пользователей в моей локальной базе данных, а не в тестовой базе данных. Я нашел "решение", но не знаю, почему оно работает. Может быть, кто-нибудь сможет помочь.
apps/user/tests/factories.py
class CompanyFactory(factory.django.DjangoModelFactory):
class Meta:
model = Company
title = fake.name()
class UserFactory(factory.django.DjangoModelFactory):
class Meta:
model = User
auth0_id = fake.random_number()
email = "unit_test_user@cart.com"
company = SubFactory(CompanyFactory)
При выполнении теста, использующего фабрику, как показано ниже, поддельные пользователи сохраняются в БД:
При изменении наследования UserFactor на factory.Factory
вместо factory.django.DjangoModelFactory
все работает нормально.
Кто-нибудь знает, почему происходит такое поведение?
Для тех, кто столкнется с этой проблемой в будущем, проблема заключалась в следующем:
class SignUpTokenFactory(factory.django.DjangoModelFactory):
class Meta:
model = SignUpToken
token = fake.random_number()
user = UserFactory()
В другом месте была еще одна фабрика, создающая и присваивающая экземпляр класса User. Это должно было быть user = Subfactory(UserFactory)