Использование @classmethod для создания объектов в django для тестирования - PullRequest
0 голосов
/ 12 апреля 2019

Как на перспективном уровне более высокого уровня, но какой метод создания объектов для тестирования предпочтителен и почему?

Пояснение: для целей тестирования, то есть для тестирования model, созданного в файле test_models.py

Первый путь:

Использование @ classmethods

class AuthorModelTest(TestCase):
    @classmethod
    def setUpTestData(cls):
        Author.objects.create(first_name="Big", last_name="Bob")

Второй путь:

Или передать self вместо обращения к class

class AuthorModelTest(TestCase):
    def setUpTestData(self):
        Author.objects.create(first_name="Big", last_name="Bob")

1 Ответ

1 голос
/ 12 апреля 2019

Он определен как classmethod в TestCase, поэтому вы должны сделать то же самое в своем коде.Возможно, обе версии работают прямо сейчас, но в будущих версиях Django это может нарушить совместимость вашего кода с Django.Вы можете проверить документацию .

classmethod TestCase.setUpTestData (): Описанный выше атомарный блок уровня класса позволяет создавать исходные данные наУровень класса, один раз для всего TestCase.

Просто следуйте примеру из документов:

from django.test import TestCase

class MyTests(TestCase):
    @classmethod
    def setUpTestData(cls):
        # Set up data for the whole TestCase
        cls.foo = Foo.objects.create(bar="Test")
        ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...