如何使用Django的assertJSONEqual方法来验证返回JsonResponse的视图的响应

7 浏览
0 Comments

如何使用Django的assertJSONEqual方法来验证返回JsonResponse的视图的响应

我正在使用Python 3.4和Django 1.7。我有一个视图返回JsonResponse

def add_item_to_collection(request):
    # (...)
    return JsonResponse({'status':'success'})

我想通过单元测试验证该视图是否返回正确的响应:

class AddItemToCollectionTest(TestCase):
    def test_success_when_not_added_before(self):
        response = self.client.post('/add-item-to-collection')
        self.assertEqual(response.status_code, 200)
        self.assertJSONEqual(response.content, {'status': 'success'})

然而assertJSONEqual()行引发了一个异常:

Error
Traceback (most recent call last):
  File "E:\Projects\collecthub\app\collecthub\collecting\tests.py", line 148, in test_success_when_added_before
    self.assertJSONEqual(response.content, {'status': 'OK'})
  File "E:\Projects\collecthub\venv\lib\site-packages\django\test\testcases.py", line 675, in assertJSONEqual
    data = json.loads(raw)
  File "C:\Python34\Lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

当响应包含JSON时,检查响应内容的正确方法是什么?为什么我尝试在assertJSONEqual()中将原始值与字典进行比较时会出现类型错误?

0