【发布时间】:2021-01-18 16:45:12
【问题描述】:
我有一个 Django 视图,它返回一个要下载的文件 (response['Content-Disposition'] = 'attachment; filename=' + filename) 以响应 POST,因为文件的内容取决于表单提交的数据。在为此视图设置测试时,我很难找到一种干净的方式来下载文件并确保它在之后被清理,因为 TestCase 行为并不是免费的。目前我有以下:
with tempfile.TemporaryDirectory(dir='.') as temp_dir:
os.chdir(temp_dir)
response = self.client.post(...)
# Do asserts of the downloaded file/response object here
os.chdir('..')
这样做的好处是创建了一个临时目录,将文件下载到该目录,并在测试完成时删除整个目录。此外,如果任何断言失败,临时目录(和内容)将保留,但这特别脆弱,并且可能由于目录更改而破坏其他测试。
有没有更好的方法/模式来完成这个?
【问题讨论】:
标签: python django testing automated-tests