Ошибка сервера в тестировании Django rest-framework ModelViewSet с помощью RequestsClient - PullRequest
0 голосов
/ 29 марта 2020

Мы создаем 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'.

Любой намек на то, куда мы должны продолжить поиск, будет принят с благодарностью.

...