Django JsonResponse返回内容类型text / html而不是application / json

时间:2016-05-16 20:48:07

标签: python json django travis-ci jsonresponse

我正在研究一个我正在研究的django网络项目,我似乎无法找到任何答案。 我试图像这样简单地测试一个视图:

def list(request):
    return JsonResponse( {"foo": "bar"} )

似乎运行良好。如果我在浏览器上打开网站并检查页面信息,则显示“Type:application / json”。

然而,当我在travis 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

网址都很好。测试收到正确的页面,只是类型看起来是text / html而不是application / json,我不知道为什么会这样。

任何人都有任何想法,为什么会这样?

编辑:将self.client.get('/ api / list')更改为self.client.get('/ api / list /')解决了问题。

1 个答案:

答案 0 :(得分:1)

似乎

self.client.get('/api/list')

导致错误页面(因此文本/ html content_type)。

编辑:根据LudwikTrammer的说法,不是错误页面,而是http重定向。

更改

self.client.get('/api/list') 

self.client.get('/api/list/') 

解决了这个问题。