如何在Python中模拟Django Model.save()函数?

2 投票
1 回答
2233 浏览
提问于 2025-04-17 00:58

我正在使用mock库,我想要模拟我模型类中的save()函数,具体要求是:

第一次和第二次调用这个原始函数时,应该正常执行并成功保存模型,而第三次调用时则应该抛出一个异常。

这是为了测试一个函数,这个函数会调用save三次(而这个特定的测试需要处理只有第三次调用失败的情况)。

1 个回答

1

根据http://pypi.python.org/pypi/mock的文档。

>>> values = [1, 2]
>>> def side_effect():
...     return values.pop()
...
>>> real = SomeModelClass()
>>> real.save = Mock(side_effect=side_effect)

这个应该能正常工作两次,然后每次之后都会出现一个IndexError错误。

我完全不明白这能说明你的代码什么问题,尤其是当基础设施停止工作的时候。你有没有测试所有的操作系统调用?所有的Python库调用?还有其他Django的方法,看看你的应用在这些失败情况下是如何应对的?

撰写回答