gpt4 book ai didi

Django - 如何在测试期间更改 FileField upload_to 路径

转载 作者:行者123 更新时间:2023-11-28 19:49:38 25 4
gpt4 key购买 nike

我正在为带有 FileField 的 Django 模型编写测试用例。我想更改上传路径以防止测试对系统的其余部分产生副作用。

我已经尝试将可调用传递给 upload_to 并在测试中对其进行修补:

#models.py
upload_path = lambda x, y: 'files'
class Model(models.Model):
file = models.FileField(upload_to=upload_path)

#tests.py
test_path = mock.Mock()
test_path.return_value = 'files/test'
@mock.patch('models.upload_path', new=test_path)
class ModelTest(object):
...

但这似乎不起作用,我相信原因是 upload_path 在任何测试代码运行之前被 FileField 取消引用,所以现在修补已经太晚了。

如何让测试代码更改 upload_to 是什么?如果做不到这一点,模型如何检查它是否正在由测试运行?

最佳答案

我想你快到了,但要获得你想要的后期评估,你需要将 file_path 作为你想要修补的变量放入,然后使用 lambda 来延迟绑定(bind):

#models.py
upload_path = 'files'
class Model(models.Model):
file = models.FileField(upload_to=lambda x,y: upload_path)

#tests.py
@mock.patch('models.upload_path', 'files/test')
class ModelTest(object):
...

关于Django - 如何在测试期间更改 FileField upload_to 路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13217990/

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