gpt4 book ai didi

django - 如何创建用于测试的临时文件结构

转载 作者:行者123 更新时间:2023-12-03 20:50:08 25 4
gpt4 key购买 nike

在单元测试和 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 图像)?
谢谢你。

最佳答案

对于资源准备,您应该使用 setup 和 tearDown 方法

class MyViewSetTestCase(TestCase):
def setUp(self):
# do directory & files creation here
pass

def tearDown(self):
# do cleanup (remove all dirs & files) here
pass
setUp 在每次测试之前调用,tearDown 在每次测试之后调用
您可以使用 创建目录树os.makedirs
您可以使用 删除目录树Shutil.rmtree

关于django - 如何创建用于测试的临时文件结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63263423/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com