Seite 1 von 1

Welches Mock-Framework

Verfasst: Dienstag 1. Juli 2008, 13:10
von Pekh
Hallo,

ich würde gerne mit Mock-Objekten arbeiten, verzweifele aber gerade so ein bisschen an der Vielfalt der angebotenen Lösungen. Mit welchen Frameworks habt ihr gute Erfahrungen gemacht?

Danke schon mal im Voraus

Verfasst: Mittwoch 2. Juli 2008, 09:29
von sma
Ist es in Python nicht einfach genug, das ganz ohne "Rahmenwerk" zu machen?

Wenn du ein `Foo` haben willst, welches beim Aufruf von `bar` eine 42 liefert, dann definiere

Code: Alles auswählen

class FooMock:
  def bar(self): return 42
und benutze `FooMock()` statt `Foo()`. Okay, sowas nennt man vielleicht eher "Stub" - mir ist nicht immer der Unterschied klar. Willst du stattdessen prüfen, ob `bar` von einem `Foo` mit dem Argument 42 aufgerufen wird, böte sich dies an:

Code: Alles auswählen

class FooMock:
  def bar(self, arg): self.arg = arg
  def assert_contract(self): assert self.arg == 42
und du baust einen Aufruf von `assert_constract` in deinen Unittest ein.

Ansonsten sieht minimock doch ganz nett aus.

Stefan

Verfasst: Mittwoch 2. Juli 2008, 11:52
von Pekh
sma hat geschrieben:Ist es in Python nicht einfach genug, das ganz ohne "Rahmenwerk" zu machen?
So praktiziere ich das bisher. Nur ist es gerade im Zusammenhang mit ORM bisweilen recht aufwändig, entsprechende Strukturen nachzubauen. Ich hatte halt die Hoffnung, daß mir entsprechende Frameworks da einen guten Teil der Arbeit abnehmen könnten (wozu sollten sie sonst gut sein?).

Ich bin zur Zeit bei "mock" stehengeblieben und überlege gerade, wie ich (in einem konkreten Fall) die Tests aufbauen müßte, um die Vorteile des Frameworks nutzen zu können. Vielen Dank aber auch für den Hinweis auf minimock, das werde ich dann mal vergleichend danebenhalten.