【发布时间】:2020-11-25 12:37:45
【问题描述】:
在单元测试和 Selenium 功能测试期间生成的文件在之后不会被清理。我花了很长时间试图让django-cleanup 工作,但它什么也没做。
我想我需要创建一个临时文件结构,可以在测试期间将文件上传到该结构,然后在测试后将其销毁。这就是我创建临时 MEDIA_ROOT 文件的方式:
MEDIA_ROOT = tempfile.mkdtemp()
@override_settings(MEDIA_ROOT=MEDIA_ROOT)
class UnitTest(TestCase):
@classmethod
def tearDownClass(cls):
shutil.rmtree(MEDIA_ROOT, ignore_errors=True)
super().tearDownClass()
问题是,虽然我可能创建了一个临时 MEDIA_ROOT 文件夹,但它并没有创建子文件夹和文件。
我的项目中的文件结构是这样的
MEDIA_ROOT
profile_pics
default.jpg
user_files
在执行每个测试之前,会创建一个用户,并在创建用户期间为用户分配一个配置文件图片“default.jpg”。这会使每个测试崩溃,因为 profile_pics 文件夹和 default.jpg 图像都不存在。如果它没有在这里崩溃,它会在稍后崩溃,因为它会尝试将文件保存在 MEDIA 中的文件夹中,而我的临时文件中不存在这些文件。
如何在不使用 Django Cleanup 的情况下在测试后删除所有文件?或者我如何创建一个临时媒体文件(类似于我已经在做的),以及其中的文件结构(它还必须包含用户创建过程中需要的 default.jpg 图像)?
谢谢。
【问题讨论】:
标签: django django-testing django-tests