我在 django 中有一个基于函数的视图函数,它从模型接收 ID,检索文件地址并使用 os.remove 将其删除
image = Images.objects.get(id=image_id)
os.remove(image.file)
image_id 是有效的并且是我的夹具的一部分。
为这个视图编写测试的最佳方法是什么,而不是每次我测试代码时手动创建文件?
有没有办法改变 os.remove 函数的行为进行测试?
我在 django 中有一个基于函数的视图函数,它从模型接收 ID,检索文件地址并使用 os.remove 将其删除
image = Images.objects.get(id=image_id)
os.remove(image.file)
image_id 是有效的并且是我的夹具的一部分。
为这个视图编写测试的最佳方法是什么,而不是每次我测试代码时手动创建文件?
有没有办法改变 os.remove 函数的行为进行测试?
是的。它被称为模拟,并且有一个 Python 库用于它:模拟。unittest.mock
Mock 在Python 3.3+的标准库中可用,或者在早期版本中独立。
所以你会做这样的事情:
from mock import patch
...
@patch('mymodel_module.os.remove')
def test_my_method(self, mocked_remove):
call_my_model_method()
self.assertTrue(mocked_remove.called)
(mymodel_module
models.py 在哪里定义你的模型,大概是导入os
的。)