Я пытаюсь проверить мои представления 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 для модульного тестирования моих представлений при проверке зависимостей модели / сериализатора?