Ich habe eine Sackgasse mit einem Django-Web-Projekt, an dem ich gerade arbeite, gefunden und ich kann keine Antworten finden. Ich versuche, eine Ansicht so einfach, wie dies zu testen:Django JsonResponse returning content-type text/html anstelle von application/json
def list(request):
return JsonResponse({"foo": "bar"})
Es scheint alles gut zu laufen. Wenn ich die Seite in meinem Browser öffne und die Page-Info überprüfe, tippe "Type: application/json".
Allerdings, wenn ich folgende Test auf einem travis ci laufen:
def setUpTestData(cls):
cls.client = Client()
#A few lines of setting up test-data
def test_content_type(self):
response = self.client.get('/api/list')
self.assertEqual(response['content-type'], 'application/json')
ich folgende Failure erhalten:
FAIL: test_content_type (researchlibrary.api.tests.test_list.ListTests)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/travis/build/FUB-HCC/ACE-Research-Library/researchlibrary/api/tests/test_list.py", line 25, in test_content_type
self.assertEqual(response['content-type'], 'application/json')
AssertionError: 'text/html' != 'application/json'
- text/html
+ application/json
Die Urls sind alle in Ordnung. Der Test erhält die richtige Seite, nur der Typ scheint anstelle von application/json text/html zu sein und ich habe keine Ahnung, warum das so ist.
Hat jemand irgendwelche Ideen, warum dies sein könnte?
BEARBEITEN: das Ändern von self.client.get ('/ api/list') zu self.client.get ('/ api/list /') löste das Problem.
Ich denke, dass Sie den Inhalt der Antwort überprüfen sollten. Es ist möglich, dass Sie anstelle der üblichen Antwort eine Fehlerseite erhalten. –
@LudwikTrammer Sie haben Recht. Die Eingabe der Adresse 'localhost/api/list' gibt die korrekte Antwort zurück, aber irgendwie scheint das bei dem Test nicht der Fall zu sein. Ich habe versucht, es in 'self.client.get ('/ api/list /')' zu ändern, und das hat tatsächlich seinen Zweck erfüllt. Danke: D Ich fühle mich jetzt irgendwie blöd ^^ – Helliaca
@LudwikTrammer Du solltest das als Antwort erstellen. – cwallenpoole