【发布时间】:2012-08-26 02:53:36
【问题描述】:
我有一个 Django 模型的客户经理,它覆盖 create 方法来保存一些相关对象:
class CustomManager(models.Manager):
def create(self, amount, user, description):
txn = self.get_query_set().create(user, description)
txn.budget_transactions.create(amount)
return txn
我的问题是:如何模拟对txn.budget_transactions.create 的调用以引发异常?
txn 对象的budget_transactions 属性是django.db.models.fields.related.RelatedManager 的一个实例。使用mock.patch 模拟这个类不起作用,因为它是动态声明的——它不能直接导入。
有人知道怎么做吗?
【问题讨论】:
-
你在使用 Mock 库吗?你想使用补丁上下文管理器还是装饰器?
-
如果可以解决这个问题,我很乐意使用模拟库。正如我上面所说,由于相关管理器类的动态声明,以传统方式使用
mock.patch不起作用。