我正在测试我的一个网页的POST功能。当request.method == 'POST'
时,它会生成一个PDF文件并将其附加到用户上。每次运行测试时,我都会生成PDF文件,这些文件会一直积累在我的MEDIA文件夹中,我不得不手动删除它们。我决定寻找防止这种情况发生的方法,对我而言最好的方式似乎是用临时文件覆盖我的MEDIA_ROOT。
我遇到了以下错误信息
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Acer\\AppData\\Local\\Temp\\profile_pics\\default.jpg'
我确定这是因为在运行测试之前必须创建和登录用户(我不想在设置中执行此操作,因为我必须为不同的测试生成不同类型的用户)。每次创建用户时,他们的个人资料图片都设置为profile_pics\\default.jpg'
。
我的理解是模拟的MEDIA_ROOT为空,并且不包含默认的个人资料图片,因此会抛出错误。
我的问题是如何绕过这个问题(最好是模拟default.jpg图片)?我发现除了模拟MEDIA_ROOT文件夹之外,还有其他解决方案,但它们似乎非常繁琐,我希望能够正确地处理它,并从中学习。
tests.py
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'))
谢谢。
apps.get_models()
加载。虽然我不确定在哪里放置它,但我将其放在了我的models.py的顶部,并得到了以下错误raise AppRegistryNotReady("Models aren't loaded yet.") django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
。我搜索了这个错误,但修复方法没有帮助我。你有什么建议吗?非常感谢。 - horse