我正在 Django 中编写自动化测试,并开始为支持 put 方法的 API 端点编写测试。 我正在像这样发出我的 put 请求:
response = self.client.put(path, data=json.dumps({"key": "value"})
print(response.request)
如您所见,我正在尝试查看正在发送的请求的详细信息。我特别有兴趣了解请求正文中的内容。但是response.request返回的对象是一个不包含“body”键或类似内容的字典。 我认为这是测试框架不具备的一个奇怪的功能,因为它可以在许多不同的场景中派上用场。 有什么方法可以访问我尚未发现的请求正文吗?还是这个功能真的不存在?
您无法获取请求正文,例如:
response.request.body
因为 Django 使用 FakePayload
BytesIO 的包装器,限制自数据以来可以读取的内容 从 无法搜索网络,也无法阅读其内容之外的内容 长度。这确保视图在测试客户端下不能执行任何操作 这在现实生活中行不通。