Утверждения во время настройки тестового набора Django - PullRequest
0 голосов
/ 17 октября 2018

Я только изучаю подходы к тестированию в Django с использованием встроенных инструментов тестирования, в частности django.test.TestCase.Мне интересно, лучше ли использовать методы утверждений на начальном этапе setUp нового тестового класса?

Например, у меня есть следующие модели:

class TestProduct(BaseModel):
    name = models.CharField(...)

class TestPrimaryImage(BaseModel):
    url = models.TextField(...)
    product = models.ForeignKey('TestProduct', ...)

Это продукт, который будет иметь основное изображение, заданное отношением ForeignKey с записью класса TestPrimaryImage.

Следуя приведенным ниже примерам: https://docs.djangoproject.com/en/2.1/topics/testing/overview/ Я создаю класс тестирования как таковой:

class NewProductTestCase(TestCase):

    def setUp(self):

        models.TestProduct.objects.create(
            name='TestProductName'
        )

    def TestMainImage(self):

        models.TestPrimaryImage.objects.create(
            url="https://example.com/test-image-url.jpg",
            product=?
        )

Часть, в которой я не уверен, посвящена методу TestMainImage, для которого требуется класс TestProduct для ссылки.Уместно ли делать следующее во время setUp:

def setUp(self):

    self.test_product = models.TestProduct.objects.create(
        name='TestProductName'
    )

    self.assertIsInstance(self.test_product, models.TestProduct)

Присвоение вновь созданного объекта переменной класса и утверждение его создания?Утверждение подразумевает, что, если новый продукт не будет успешно создан, ни один из других методов тестирования не сможет работать вообще.Например, TestMainImage не будет иметь продукта для создания ссылки во время создания.

Этот кажется подходящим для меня подходом, но я новичок в Django и не путаюсьдля ветерана тестирования в целом.

1 Ответ

0 голосов
/ 17 октября 2018

всегда помните об этом: никогда не пишите тесты для внутренних компонентов django

django уже хорошо протестирован, и если вы считаете, что нужно что-то тестировать, отправьте им запрос на получение поддержки

поэтому для вашего примера, как мы знаем, models.TestProduct.objects.create() всегда возвращает экземпляр или вызывает исключение.так что вам не нужно ничего проверять

...