我正在Assert从我的请求返回了一个PDF。
这是我的测试到目前为止的样子。
@mock.patch('path.to.class._get_file', return_value=MockResponse(status.HTTP_200_OK, 'application/pdf'))
def test_get_should_successfully_return_the_requested_pdf(self, get_file_mock):
response = self.client.get(f'/api/v1/path/to/file/abc123.pdf, content_type='application/vnd.api+json')
self.assertEqual(response.status_code, status.HTTP_200_OK) # works great
self.assertEqual(response['Content-Type'], 'application/pdf') # works great
self.assertEqual(response, <abc123.pdf>) # not so great
字符串
如果我执行print
来查看响应中的内容:
print(response)
<HttpResponse status_code=200, "application/pdf"
型
我很确定我没有正确设置@patch
。具体而言:
status.HTTP_200_OK, 'application/pdf'
型
我看过很多关于阅读或打开文件的帖子,但我只需要确保它实际上是返回的pdf(文件)。
我如何设置我的模型,以便我可以Assert一个pdf(文件)被返回?
2条答案
按热度按时间jxct1oxe1#
我看到你正在测试当一个有效的请求被发出时,你的Django视图是否在响应中返回一个PDF文件。使用
@patch
装饰器设置mock以进行测试是正确的。让我来指导您如何正确地设置mock来测试视图函数的行为。要测试是否从视图返回PDF文件,需要模拟
_get_file
函数和requests.get
函数。_get_file
函数从给定的URL获取PDF内容,requests.get
函数用于执行HTTP请求以获取PDF内容。下面是更新后的测试用例,它正确地模拟了这两个函数来测试您的视图:
字符串
ohfgkhjo2#
我还想分享我在与@godd0t建议合作后所想到的,这是非常有帮助的。您的millage可能会有所不同,具体取决于您的
@patch
需求。字符串