AttributeError:“HttpResponse”对象没有属性“data”

问题描述 投票:0回答:3

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

这是我得到的错误:

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

这是回溯:

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”部分有关? 如果有人可以帮助我解决这个问题,我将非常感激

python django unit-testing httpresponse
3个回答
0
投票

使用 django 测试客户端进行测试时,可以轻松访问响应数据

我希望你阅读这篇文章文档

祝你好运!


0
投票

您需要读取

context
,或者如果是
DRF
/
api-type view
,请调用
.json()
response
方法。

例如:

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

0
投票

HttpResponse 对象没有任何数据属性,而 Response 对象(据我所知属于 DRF 包)有。因此,就您而言,您应该像这样访问您的内容:

data = res.content

注意这将返回一个字符串,因此如果您期望一些 json 内容,您可能需要解析

© www.soinside.com 2019 - 2024. All rights reserved.