Мы создаем Django REST-приложение, которое мы хотим протестировать с помощью RequestsClient, чтобы позже тестирование работало и на работающей системе. Это хорошо работает для APIViews, если мы унаследуем тестовый класс от Django TestCase и установим
client_class = RequestsClient
в начале определения тестового класса.
Однако, если мы попробуем та же концепция с ModelViewSet, тест выдает внутреннюю ошибку сервера (HTTP-ответ 500) даже для простого запроса GET без дополнительных аргументов. Когда мы выдаем те же запросы в небольшой автономной программе, например, так:
import requests
url = "http://127.0.0.1:8000/variables/variables/"
print(requests.get(url))
Он работает и возвращает ответ 200 OK.
Мы немного углубились в проблему и переопределили метод list из ModelViewSet для включения некоторых отладочных выходных данных:
def list(self, request, *args, **kwargs):
print("**** in VariableViewSet.list")
print("*** serializer: ", repr(self.serializer_class()))
print("*** request: ", request.data, request.query_params, request.user,
request.method, request.session, request.path, request.headers['content_type'])
return super(VariableViewSet, self).list(self, request, *args, **kwargs)
Все выглядит нормально, за исключением того, что вывод content_type
отличается: при запуске из тестовой среды он ничего не показывает, а при запуске из автономного test, он показывает 'text / plain'.
Любой намек на то, куда мы должны продолжить поиск, будет принят с благодарностью.