2
我已經打了一個django web項目的死衚衕,我正在努力,我似乎無法找到任何答案。 我想測試這麼簡單一個觀點:Django JsonResponse返回內容類型的文本/ HTML而不是應用程序/ JSON
def list(request):
return JsonResponse({"foo": "bar"})
它似乎運行都好。如果我在瀏覽器上打開網站並檢查頁面信息,它會顯示「類型:application/json」。
然而,當我運行下面的一個詞特拉維斯測試:
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')
我獲得以下故障:
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
的URL無一不精。測試收到正確的頁面,只是類型看起來是text/html而不是application/json,我不知道爲什麼。
有人有任何想法,爲什麼這可能是?編輯:將self.client.get('/ api/list')改爲self.client.get('/ api/list /')解決了這個問題。
我想你應該檢查響應的內容。您可能會收到一個錯誤頁面,而不是通常的響應。 –
@LudwikTrammer你說得對。輸入地址'localhost/api/list'會返回正確的響應,但不知何故,測試似乎不是這種情況。我嘗試將其更改爲'self.client.get('/ api/list /')',而且確實做了這項工作。謝謝:D我現在覺得有點愚蠢^^ – Helliaca
@LudwikTrammer你應該創建一個答案。 – cwallenpoole