2017-04-04 121 views
0

我想測試一個特定的模型,而不必擔心它具有外鍵(FK)的其他模型。使用外鍵測試django模型到另一個模型

說我的模型套件需要一個外鍵,我的其他型號會議: models.py

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) 

當我嘗試測試我的包類與模擬(因爲我不需要去關心是什麼字段值是在Session對象)上test_models.py

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) 

我不斷收到這樣的信息:

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' 

下面是問題:在這種情況下使用測試Double的絕對正確方法是什麼?因爲到目前爲止我還沒有成功地使用一個。

回答

0

看起來你試圖通過自動規範模擬Session.__init__中設置的屬性,這是不可能的。你可以在這個相關的查詢更多關於它question

+0

謝謝你的回答。我解決了我的問題 – joaofguerreiro