Написать тесты на все CRUD операции, для всех вьюсетов
Настраиваем запуск тестов
Ставим пакет для тестов
pip install pytest-django

не забываем после установки вписать пакет в requirements.txt

создаем файлик pytest.ini и загоняем в него код

далее кликаем сначала на влкадку тестов, а затем Configure Python Tests

далее выбираем pytest

затем root directory

И немного подождать
Запускаем первый тест
теперь создаем в файлике tests.py класс для тестирования вьюсета Students

идём во вкладку с тестами, там должно появиться такое

Можно кликнуть на значок плей, либо нажать прямо слева от названия тестового метода

Если все хорошо, то должна появится иконка справа от названия метода что все ок.

Если попробовать поменять условие на некорректное и запустить

то увидим такое:

Тест на запрос списка данных
Попробуем теперь написать тест которые проверяет работу API.

Вот пример теста, который проверяет что список студентов возвращается корректно

Тест на создание записи
Пример теста на создание студента

Для более быстрого создания моделей, поставим себе пакет model-bakery
pip install model-bakery
теперь если добавить импорт этого пакета,

то создавать модели можно вот так:

то есть bakery за вас придумает имена. А так как на по сути не важно какие будут имена, а важно только, что данные в базе совпадают с данными которые возвращает api, то тест будет также корректно выполняться.
В случае с тестом на создание, можно оптимизировать код создания группы

Тест на удаление данных

кстати 10 – значит создать десять экземпляров класса.
То есть я в тесте тестирую сначала сколько моделей было до удаления, и сколько стало после.
А самой последней строчкой проверяю, что удаленная запись отсутствует в возвращаемых API данных.
Тест на обновление данных

строчка student.refresh_from_db() переподтягивает данные объекта из БД и позволяет проверить что данные в БД совпадают с данными которые вернул API