在django

时间:2015-05-18 21:30:43

标签: python django django-testing django-tests

我在django中有一个基于函数的视图函数,它从模型接收ID,检索文件地址并使用os.remove删除它

image = Images.objects.get(id=image_id)
os.remove(image.file)

image_id有效,是我装置的一部分。

为这个视图编写测试的最佳方法是什么,而不是每次我都在测试代码时手动创建文件?

有没有办法改变os.remove函数的行为以进行测试?

1 个答案:

答案 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。)