0

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

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

image_id 是有效的并且是我的夹具的一部分。

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

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

4

1 回答 1

1

是的。它被称为模拟,并且有一个 Python 库用于它:模拟。unittest.mockMock 在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_modulemodels.py 在哪里定义你的模型,大概是导入os的。)

于 2015-05-18T21:49:32.930 回答