django 属性错误:“HttpResponse”对象没有属性“data”

kkbh8khc  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(207)

我目前正在为我的django应用程序构建一些单元测试,但是我的test_views测试在运行时总是返回一个错误,我不确定这意味着什么以及如何解决它。
我得到的错误是:

AttributeError: 'HttpResponse' object has no attribute 'data'

字符串
这是traceback:

File "C:\Users\t-dalour\app\blog\requests\unit tests\test_views.py", line 15, in test_user_can_register_successfully
    self.assertEqual(res.data['email'], self.user_data['email'])
                     ^^^^^^^^


下面是我的test_views.py代码:

from django.test import TestCase, Client
from django.urls import reverse
from requests.models import Post
from .test_setup import TestSetUp

class TestViews(TestSetUp):
    def test_user_cannot_register_with_no_data(self):
        res=self.client.post(self.register_url)
        self.assertEqual(res.status_code, 200)

    def test_user_can_register_successfully(self):
        res=self.client.post(
            self.register_url, self.user_data, format="json")
        self.assertEqual(res.data['email'], self.user_data['email'])
        self.assertEqual(res.data['username'], self.user_data['username'])
        self.assertEqual(res.status_code, 201)


我试图在互联网上搜索这个错误的解决方案,但找不到任何与此相关的东西。我猜它和“res.data”部分有关吧?如果有人能帮我解决这个问题,我将非常感激

olhwl3o2

olhwl3o21#

使用django测试客户端进行测试时,可以轻松访问响应数据
我希望你读过这些文档
祝你好运!

ahy6op9u

ahy6op9u2#

您需要读取context,或者如果它是DRF/api-type view,调用response.json()方法。
举例来说:

def test_json_response(self):  # noqa: D102
        response = self.client.post(
            self.url,
            {},
        )
        self.assertEqual(response.status_code, 200)
        data = response.json()
        ...

字符串

相关问题