作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在测试我的一个网页 POST 功能。 if request.method == 'POST'
它生成一个 pdf 并将其附加到用户。每次我运行测试时,我都会生成在我的 MEDIA 文件夹中构建的 pdf 文件,我必须手动删除它们。我决定寻找防止这种情况发生的方法,在我看来最好的方法是用临时文件覆盖我的 MEDIA_ROOT。
我收到以下错误消息
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Acer\\AppData\\Local\\Temp\\profile_pics\\default.jpg'
profile_pics\\default.jpg'
.
from django.test import override_settings
import tempfile
@override_settings(MEDIA_ROOT=tempfile.gettempdir())
def test_redirects_after_POST(self):
user = User.objects.create_superuser('username')
self.client.force_login(user)
response = self.client.post(
reverse('final_question'), data={
'answer': 'this has me totally stumped'}
)
self.assertRedirects(response, reverse('page_2'))
最佳答案
问题:
PDF 文件正在您的 MEDIA_ROOT 文件夹中建立,因为没有任何东西会自动删除它们。
推荐解决方案:
实际上几个月前我自己也遇到过这个问题,我找到的解决方案是 django-cleanup工具。安装和集成到您的应用程序中非常容易(只需将其添加到您的 INSTALLED_APPS
中 settings.py
)。
注:这是假设您的 PDF 文件位于 FileField
您的模型之一。如果情况并非如此,那么此解决方案对您不起作用。
关于django - 单元测试 : How To Mock MEDIA_ROOT But Still Access A File That Is Stored In My Normal MEDIA Folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62111736/
我是一名优秀的程序员,十分优秀!