Как тестировать представления с использованием фиктивных сериализаторов и моделей в Django Rest Framework - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь проверить мои представления Django, высмеивая сериализаторы и методы модели, используемые в представлении.Однако мой тестовый клиент продолжает пытаться подключиться к базе данных даже после того, как я установил исправления для моделей и методов сохранения сериализатора (я не хочу подключаться к базе данных в этих модульных тестах.)

models.py

class Person(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)

    class Meta:
        managed = False
        db_table = 'Person'

serializers.py

class PersonSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = ('first_name', 'last_name')

views.py

class PersonCreate(generics.CreateAPIView):
    serializer_class = PersonSerializer

     def perform_create(self, serializer):
         id = self.get_next_available_id()
         serializer.save(id=id)

tests.py

def test_create_person(self, client, mocker):
        PersonFactory.build()

        data = {
            'first_name': 'test'
            'last_name': 'user'
        }

        mocker.patch.object(PersonSerializer, 'save', auto_spec=True)

        url = reverse('create-person')
        response = client.post(url, data) # requires access to database

        assert response.status_code = status.HTTP_201_CREATED

Тест, который я написал и который вызываетметод напрямую, а также обеспечивает покрытие кода, НО не использует клиент.

def test_create_person(self, client, mocker):
        PersonFactory.build()

        serializer = mocker.patch.object(PersonSerializer, 'save')

        view = PersonCreate()
        PersonCreate.perform_create(view, serializer)

        serializer.save.assert_called_once()

Как я могу использовать тестовый клиент Django для модульного тестирования моих представлений при проверке зависимостей модели / сериализатора?

...