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.
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.