Почему 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)  

При выполнении теста, использующего фабрику, как показано ниже, поддельные пользователи сохраняются в БД:

Djano Admin after test runs

При изменении наследования 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)

Вернуться на верх