Mock in Python-Wie man Mox benutzt

Ich möchte eine Klasse verspotten, die ich noch nicht gemacht habe

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.

Ich möchte eine Klasse verspotten, die bereits existiert

Wenn der obige Test beendet ist und die Benutzerklasse abgeschlossen ist, beenden Sie CreateMockAnything und Machen Sie es einfach m.CreateMock (Benutzer).

Ich möchte die Methode ersetzen und Dummy-Daten übergeben (Mock)

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!

Achtung

Zusammenfassung

  1. CreateMockAnything eignet sich zum Schreiben von grobem Implementierungscode, z. B. zum Schreiben von Code
  2. Ich mag CreateMockAnything nicht, daher füge ich einen Test mit CreateMock hinzu.
  3. Mit CreateMock müssen Sie die Klasse tatsächlich schreiben, also schreiben Sie die erforderliche Klasse
  4. Streben Sie den Abschluss mit StubOutWithMock an, um detailliertere Implementierungen zu sammeln
  5. Wenn Sie es bemerken, ist es abgeschlossen ( ̄ ー  ̄)

Recommended Posts

Mock in Python-Wie man Mox benutzt
Python-How zur Verwendung von Pyinstaller
Verwendung von Klassen in Theano
Verwendung von SQLite in Python
Wie man MySQL mit Python benutzt
Verwendung von ChemSpider in Python
Verwendung von PubChem mit Python
Verwendung berechneter Spalten in CASTable
[Einführung in Python] Wie verwende ich eine Klasse in Python?
Verwendung von Google Test in C-Sprache
Einfache Möglichkeit, Wikipedia mit Python zu verwenden
Mindestkenntnisse zur Verwendung von Form with Flask
Verwendung von Anacondas Interpreter mit PyCharm
Verwendung von __slots__ in der Python-Klasse
Verwendung regulärer Ausdrücke in Python
So verwenden Sie Map in ViewPager von Android
Verwendung ist und == in Python
Verwendung der C-Bibliothek in Python
Verwendung der Python-Bildbibliothek in der Python3-Serie
Zusammenfassung der Verwendung von MNIST mit Python
EP 11 Verwenden Sie "zip", um Iteratoren parallel zu verarbeiten
Verwenden Sie ein Kryptografiemodul, das OpenSSL in Python verarbeitet
Wie man tkinter mit Python in Pyenv benutzt
Erkennen Sie Anomalien in Sätzen mit ELMo, BERT, USE
Loggen Sie sich mit json mit pygogo ein.
Wie man eine öffentliche Funktion in Pytest verspottet
Verwenden Sie os.getenv, um Umgebungsvariablen in Python abzurufen
Verwendung von xml.etree.ElementTree
Wie benutzt man Python-Shell
Hinweise zur Verwendung von tf.data
Verwenden Sie config.ini mit Python
Wie benutzt man Seaboan?
Verwendung von Image-Match
Wie man Shogun benutzt
Verwenden Sie Mock mit Pytest
Verwendung von Pandas 2
Verwenden Sie DataFrame in Java
Verwenden Sie Datumsangaben in Python
Ich möchte mich mit Backpropagation (tf.custom_gradient) (Tensorflow) selbst verwenden.
Verwendung von Virtualenv
Verwendung von numpy.vectorize
Verwendung von pytest_report_header
Einfach zu bedienende Flasche
Verwenden Sie Valgrind mit Python
Ein Memorandum zur Verwendung von Keras 'keras.preprocessing.image
Wie man teilweise verwendet
So installieren Sie Google Test / Google Mock in Visual Studio 2019
Wie man Bio.Phylo benutzt
Verwendung von SymPy
Wie man x-means benutzt
Verwendung von WikiExtractor.py
Verwendung von IPython
Verwendung von Bootstrap in der generischen Klassenansicht von Django
Verwendung von virtualenv
Verwendung der Template-Engine in einer Dateianwendung von Pyramid
Verwendung der Exist-Klausel in Django Queryset
Setzen Sie die Schlüsselwortargumente des Konstruktors auf die Scheinattribute in Python
Wie benutzt man Matplotlib?
Verwenden Sie ujson in Anfragen
Verwendung von Variablen in systemd Unit-Definitionsdateien