私が作業しているdjango Webプロジェクトで枯渇しましたが、私は答えが見つからないようです。 私はこのような単純なビューをテストしようとしている:Django JsonResponseがapplication/jsonの代わりにcontent-type text/htmlを返す
def list(request):
return JsonResponse({"foo": "bar"})
すべてが順調に実行するようです。ブラウザでサイトを開き、ページ情報を確認すると「タイプ:application/json」と表示されます。
しかし、私はトラヴィスのCI上で次のテストを実行する場合:
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は、すべての罰金です。テストで正しいページが返されますが、application/jsonの代わりにtext/htmlのように見えますが、なぜそれがあるのかわかりません。
これはなぜですか?
EDIT:self.client.get( '/ api/list')をself.client.get( '/ api/list /')に変更すると問題が解決しました。
私はあなたが応答の内容をチェックするべきだと思います。通常のレスポンスの代わりにエラーページが表示される可能性があります。 –
@ LudwikTrammerそうです。 'localhost/api/list'というアドレスを入力すると、正しい応答が返されますが、何とかテストではそうではないようです。私は 'self.client.get( '/ api/list /')'に変更しようとしました。ありがとう:D私は今、愚かな気分になります^^ – Helliaca
@ LudwikTrammerあなたは答えとしてそれを作成する必要があります。 – cwallenpoole