如何查看 Django 测试客户端发出的请求正文

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

我正在 Django 中编写自动化测试,并开始为支持 put 方法的 API 端点编写测试。 我正在像这样发出我的 put 请求:

response = self.client.put(path, data=json.dumps({"key": "value"})
print(response.request)

如您所见,我正在尝试查看正在发送的请求的详细信息。我特别有兴趣了解请求正文中的内容。但是response.request返回的对象是一个不包含“body”键或类似内容的字典。 我认为这是测试框架不具备的一个奇怪的功能,因为它可以在许多不同的场景中派上用场。 有什么方法可以访问我尚未发现的请求正文吗?还是这个功能真的不存在?

django django-rest-framework django-testing django-tests
1个回答
0
投票

您无法获取请求正文,例如:

response.request.body

因为 Django 使用 FakePayload

BytesIO 的包装器,限制自数据以来可以读取的内容 从 无法搜索网络,也无法阅读其内容之外的内容 长度。这确保视图在测试客户端下不能执行任何操作 这在现实生活中行不通。

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