【发布时间】:2011-07-27 01:14:09
【问题描述】:
我在 django 中有一个模型,它有一个指向另一个模型的外键,在单元测试期间,我想避免两个模型的紧密耦合,并为另一个模型创建一个存根,每次都会返回不同的值。
人为的例子:
class Moon(models.Model):
def phase(self):
# some extremely complex code
class Wolf(models.Model):
moon = models.ForeignKey(Moon)
mood = models.CharField()
def update_mood(self):
if (self.moon.phase == 'new moon'):
self.mood = "good"
if (self.moon.phase == 'waxing crescent'):
self.mood = "hopefull"
...
以上示例:
w = Wolf()
m = Moon()
# m.phase = 'new moon'
w.moon = m
w.update_mood()
w.mood # 'good'
现在我想在执行 update_mood() 调用后测试 Wolf().moon 属性,而根本不实际接触 Moon 模型 - 因为它是一个非常复杂的模型,涉及到各种外部系统来计算走出它的阶段。
通常我会为此使用猴子补丁,但由于 .mood 是一个属性......我不能真正以猴子补丁的方式分配给它。
帮助。
【问题讨论】:
标签: django unit-testing monkeypatching