Wenn Sie die Steuerungsseite vorerst erstellen möchten, können Sie die Modellerstellung verschieben.
test_login.py
import unittest
class TestLoginMethod(unittest.TestCase)
def test_login_returns_true(self):
m = mox.Mox()
user = m.CreateMockAnything() #Absicht der Benutzermodellklasse, die in Zukunft erstellt werden soll
user.account().AndReturn("norobust") #Geben Sie den Kontonamen vorerst zurück
l = Login() #Anmeldeklasse entwickelt werden
l.user = user #Übergeben Sie einen Mock, damit innerhalb der Login-Klasse auf ihn verwiesen werden kann
m.ReplayAll() #fang mox an!
self.assertTrue(l.login()) #Login Test!
m.VerifyAll() #Mox Ergebnisprüfung!
VerifyAll mit mox, um zu überprüfen, ob die von Ihnen eingerichtete Methode (in diesem Fall user.account ()) aufgerufen wurde.
Wenn der obige Test beendet ist und die Benutzerklasse abgeschlossen ist, beenden Sie CreateMockAnything und Machen Sie es einfach m.CreateMock (Benutzer).
Im obigen Fall ist es wie "l.user = user", aber in Wirklichkeit schreiben Sie etwas wie "self.user = get_user_by_id (1)" in Login.login (). Ich denke, Sie werden ein Benutzermodell bekommen. Wenn get_user_by_id wirklich aufgerufen wird, können Sie den von Ihnen erstellten User-Mock nicht übergeben. In diesem Fall müssen Sie, anstatt die Login-Klasse zu verspotten, nur get_user_by_id () stubben.
test_login.py
import unittest
class TestLoginMethod(unittest.TestCase)
def test_login_returns_true(self):
m = mox.Mox()
user = m.CreateMockAnything() #Benutzermodell habe ich noch nicht gemacht ...
user.account().AndReturn("norobust") #Geben Sie den Kontonamen vorerst zurück
l = Login() #Anmeldeklasse entwickelt werden
m.StubOutWithMock(Login, 'get_user_by_id') #Stubbing
Login.get_user_by_id().AndReturn(user) #Stellen Sie den Rückgabewert der stubisierten Funktion ein
m.ReplayAll() #fang mox an!
self.assertTrue(l.login()) #Login Test!
m.VerifyAll() #Mox Ergebnisprüfung!
Recommended Posts