在 Django 中为包含 os.remove 的视图编写测试

Write test for views containing os.remove in django

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

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

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

为此视图编写测试的最佳方式是什么,而无需在我每次测试代码时手动创建文件?

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

是的。它叫做 mocking,有一个 Python 库:mock。 Mock 在标准库中作为早期版本的 unittest.mock for Python 3.3+, or 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。)