Welches Mock-Framework

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Welches Mock-Framework

Beitragvon Pekh » Dienstag 1. Juli 2008, 13:10

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
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Mittwoch 2. Juli 2008, 09:29

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
Pekh
User
Beiträge: 482
Registriert: Donnerstag 22. Mai 2008, 09:09

Beitragvon Pekh » Mittwoch 2. Juli 2008, 11:52

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.

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot]