2017-04-04 6 views
0

Ich möchte ein bestimmtes Modell testen, ohne sich um das andere Modell kümmern zu müssen, zu dem es einen Fremdschlüssel (FK) hat.Test django Modell mit Fremdschlüssel zu einem anderen Modell

Sagen Sie mein Modell Bundle einen Fremdschlüssel zu meiner anderen Modell Session benötigt: 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) 

Als ich versuche, meine Bundle-Klasse mit einem Mock zu testen (weil ich nicht kümmern muß, was Feldwerte sind in dem Objekt Session) auf 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) 

ich halte diese Nachricht bekommen:

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' 

Hier ist die Frage: Was ist der absolut richtige Weg zur Verwendung eines Test Double in dieser Situation? Weil es mir bisher nicht gelungen ist, einen zu verwenden.

Antwort

0

Sieht so aus, als ob Sie versuchen, Attribute in der Session.__init__ durch Autospec, die nicht möglich ist, zu verspotten. Sie können mehr darüber in diesem verwandten question

+0

Vielen Dank für Ihre Antwort. Ich habe mein Problem gelöst – joaofguerreiro

Verwandte Themen