Как упоминает lalithkumar, то, что вы написали, на самом деле является скорее интеграционным тестом, чем надлежащим модульным тестом - правильный модульный тест напрямую вызовет функцию представления с объектом request
ручной работы и mock моделью. слой.
Теперь обратите внимание, что это само по себе неплохо - интеграционные тесты тоже имеют свое применение, и в этом случае ваш тест выявляет недостаток в вашем коде представления и вашем API-интерфейсе c: вы не обработка случая, когда организация не существует - фактически, вы вообще не обрабатываете ошибки.
IOW, вы делаете хотите сохранить этот тест - и, возможно, добавить другие тесты, отправляющие другие недействительные данные - и проверить, что вы получаете код состояния 4XX (4xx => неверный запрос) и некоторые подробности об ошибках в вашем json.
Кроме того, для номинального случая (команда успешно создана) вы можете вместо этого вернуть 201 Создано (как статус ответа ). , не в самой json!), Со ссылкой на вновь созданную команду в содержимом json.
Примечание: конечно, если вы не высмеиваете слой модели, который у вас есть создать экземпляр организации в вашей базе данных до вызова client.post()
.
EDIT :
Не могли бы вы сказать мне, как вызвать функцию представления с помощью Запросить объект вручную и макетировать слой модели?
Для первой точки, которую вы хотите Django ' RequestFactory - знайте, что это может быть немного болезненно при настройке. wrt / mocking, я уже связался с соответствующим do c. Я не собираюсь приводить вам подробный пример, потому что это заняло бы гораздо больше времени, чем я могу себе позволить (и уже есть некоторые материалы по топи c).
Как говорится, в вашем случае Я не стал бы беспокоиться об этом в ATM (пока ваш наставник не потребует «правильного» модульного тестирования, но это большая работа, так как вам придется тестировать все задействованные компоненты изолированно, каждый раз со всеми угловыми случаями - и __still_ написать интеграционные тесты выше).
Ваш текущий интеграционный тест может не понравиться пуристам, но он все еще эффективен - он действительно тестирует всю цепочку, и, как я уже сказал, он уже выявил серьезную проблему с вашей реализацией: полное отсутствие обработки ошибок. В реальных программах достаточно часто иметь в три раза больше кода, связанного с ошибками / угловыми случаями / неожиданными условиями, чем то, что фактически необходимо для работы с номинальным случаем.