3 Stimmen

Python-Bibliothek zur Erstellung von Stubs/Fake-Objekten

Ich bin auf der Suche nach einer Python Stubbing Bibliothek. Etwas, das verwendet werden könnte, um gefälschte Klassen/Methoden in meinen Unit-Tests zu erstellen Gibt es eine einfache Möglichkeit, es in Python zu erreichen

Danke

PS: Ich bin nicht auf der Suche nach einer Mocking-Bibliothek, in der man die Erwartung aufzeichnen und wiedergeben kann.

Unterschied zwischen Mocks und Stubs

0 Stimmen

"Mock-Objekte verwenden immer eine Verhaltensüberprüfung, ein Stub kann in beide Richtungen gehen." Ein Stub ist also ein Mock? Was bringt es, zu sagen "keine Mocks", wenn "Stubs" das Gleiche tun können wie Mocks? Anstatt einen großen Artikel zu zitieren, geben Sie bitte den tatsächlichen Unterschied an, der für Sie von Bedeutung ist.

9voto

S.Lott Punkte 371691

Wir tun dies.

class FakeSomethingOrOther( object ):
   def __init__( self ):
       self._count_me= 0
   def method_required_by_test( self ):
       return self.special_answer_required_by_test
   def count_this_method( self, *args, *kw ):
       self._count_me += 1

Es ist nicht viel nötig, um sie einzurichten

class TestSomething( unittest.TestCase ):
    def setUp( self ):
        self.requiredSomething = FakeSomethingOrOther()
        self.requiredSomething.attribute_required_by_test= 12
        self.requiredSomething.special_answer_required_by_test = 32
        self.to_be_tested = ActualThing( self.requiredSomething )

Da Sie keine komplexen statisch geprüften Typdeklarationen benötigen, genügt eine Klasse mit den richtigen Methoden. Sie können trivialerweise Testattributwerte erzwingen.

Diese Dinge sind wirklich sehr einfach zu schreiben. Man braucht nicht viel Unterstützung oder Bibliotheken.

In anderen Sprachen (z.B. Java) ist es sehr schwer, etwas zu schreiben, das einer statischen Kompilierzeitprüfung standhält. Da Python dieses Problem nicht hat, ist es trivial, Mocks oder gefälschte Implementierungen für Testzwecke zu schreiben.

0voto

hyperboreean Punkte 8117

Python-Spötter sieht gut aus.

Eine Mocker-Instanz wird verwendet, um die Aufzeichnung und Wiedergabe von Erwartungen an eine beliebige Anzahl von Mock-Objekten.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X