Test django model with foreign key to another model
我想测试一个特定的模型,而不必担心它具有外键(fk)的另一个模型。
假设我的模型包需要另一个模型会话的外键:
1 2 3 | class Bundle(ModelCommon): session = models.ForeignKey(verbose_name=_('Session'), to=Session, default=None, null=False, blank=False) available = models.BooleanField(verbose_name=_('Available'), default=True, null=False, blank=False) |
当我试图用一个模拟(因为我不需要关心会话对象中的字段值)在
1 2 3 4 5 6 7 8 | def setUp(self): MockSession = mock.create_autospec(Session) self.test_session = MockSession() self.bundle = Bundle(session=self.test_session, name='Mega Bundle', enabled=True, available=True, price=0) def test_event_enabled_is_default_false(self): session = Session() self.assertFalse(session.enabled) |
我一直收到这样的信息:
1 2 3 4 5 6 | Error Traceback (most recent call last): File"test_models.py", line 181, in setUp self.bundle = Bundle(session=self.test_session, name='Mega Bundle', enabled=True, available=True, price=0) raise AttributeError("Mock object has no attribute %r" % name) AttributeError: Mock object has no attribute '_state' |
问题是:在这种情况下,使用双倍测试的绝对正确方法是什么?因为到目前为止我还没有成功地使用它。
看起来您试图通过autospec模拟