我在django中有一个基于函数的视图函数,它从模型接收ID,检索文件地址并使用os.remove删除它
image = Images.objects.get(id=image_id)
os.remove(image.file)
image_id有效,是我装置的一部分。
为这个视图编写测试的最佳方法是什么,而不是每次我都在测试代码时手动创建文件?
有没有办法改变os.remove函数的行为以进行测试?
答案 0 :(得分:0)
是。它叫做mocking,并且有一个Python库:mock。 Mock在标准库中可用作Python 3.3+的unittest.mock
,或早期版本的standalone。
所以你会做这样的事情:
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
。)