Объект Django Factory Boy не существует

У меня есть вопрос относительно использования фабричного мальчика в тестировании моего Предположим, у меня есть эти три модели:

Class Company(models.Model):
   name = str

Class Domain(models.Model):
   company = ForeignKey(ref=Company)
   name = str
   created_at = datetime

Class Record(models.Model):
   domain = ForeignKey(ref=Domain)
   name = str
   created_at = datetime

CompanyFactory(factory.django.DjangoModelFactory):
   name = str

DomainFactory(factory.django.DjangoModelFactory):
   company = factory.SubFactory(CompanyFactory)
   name = str
   created_at = datetime

RecordFactory(factory.django.DjangoModelFactory):
   domain = factory.SubFactory(DomainFactory)
   name = str
   created_at = datetime

После этого, когда я тестирую представления Record, в начале каждого представления я проверяю, что объект Domain действительно связан с объектом Company, например:

try:
  domain = Domain.objects.get(domain=domain_id, company__id=company_id)
except ObjectDoesNotExist:
   return Response(
            data={"message": "Domain isn't related to the company provided."}, status=status.HTTP_403_FORBIDDEN
        )

Но этот код всегда возвращает исключение ObjectDoesNotExist, когда я провожу тестирование с помощью pytest+factory-boy, но когда я провожу ручное тестирование, все работает нормально. Вы сталкивались с чем-то подобным? Что я упускаю?

Заранее спасибо.

Как дела?

тестовый код не был включен, но я попытаюсь сделать выводы

  • when I do manual testing runs fine

кажется, что вы уже заполнили базу данных! но послушайте, когда вы запустите свой тестовый пакет, django будет использовать "тестовую базу данных" в пользу изоляции!

что вам нужно сделать, это создать, используя factory_boy lib, ваши "приспособления для данных"!

мое предложение без какого-либо контекста:

class MyTestCase(TestCase):
    def setUp(self):
        self.existing_domain_in_database = DomainFactory.create(...) # insert here the data to populate this model

и нужные данные уже должны существовать в ur "test database" для каждого теста, который будет выполняться внутри этого класса

По просьбе @gbrennon я добавляю тестовый код:

Hi! Thanks for answering.

Мой тестовый код выглядит следующим образом:

`class RecordCompanyAdminTests(CompanyAdminUser):

def setUp(self):
    super(RecordCompanyAdminTests, self).setUp()
    self.domain = DomainFactory.create()
    self.record = RecordFactory.create()
    
def test_record_list_get(self):
    url = reverse("autoprovisioning:record_list", kwargs={"company_id": self.company.id, "domain_id": self.domain.id})
    
    response = self.client.get(url, format="json")
    self.assertEqual(response.status_code, status.HTTP_200_OK)`
Вернуться на верх