我目前正在为我的 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”部分有关? 如果有人可以帮助我解决这个问题,我将非常感激
您需要读取
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()
...
HttpResponse 对象没有任何数据属性,而 Response 对象(据我所知属于 DRF 包)有。因此,就您而言,您应该像这样访问您的内容:
data = res.content
注意这将返回一个字符串,因此如果您期望一些 json 内容,您可能需要解析