Wie kann ich einen Testdurchlauf in einzelne Teile aufteilen
Verfasst: Dienstag 18. März 2014, 09:09
Hallo,
diese pytest-Geschichte macht mich noch wahnsinnig! Ich hab' geglaubt, wenigstens grundlegend mit Python umgehen zu können. Aber seitdem ich pytest installiert habe, fühle ich mich wie der totale Nullchecker!!
Ich habe eine Testfunktion geschrieben, die verschiedene monatliche Wiederholungen erstellt, für einen bestimmten Zeitraum (`search_scope`) Treffer abfragt und deren Startzeitpunkte (`s.begin`) mit einer Liste der korrekten Treffer (`monthday_range`) vergleicht:
Nun möchte ich die einzelnen Wiederholungen separat testen, damit ich im Falle eines Fehlers auch nachvollziehen kann, innerhalb welcher Wiederholung (welcher `interval`, welcher `monthday`) dieser Fehler aufgetreten ist. Ich kann aber doch nicht für jeden dieser Fälle eine eigene Testfunktion erstellen? Wie komme ich aber an nähere Informationen im Fehlerfall?hilft mir nicht, da mit pytest dann wiederum nicht sagt, welches Element der Liste einen Fehler provoziert.
Mit der pytest Dokumentation komm' ich auch nicht wirklich klar, die setzt IMHO viel zu viel Test-Vorwissen voraus.
mutetella
diese pytest-Geschichte macht mich noch wahnsinnig! Ich hab' geglaubt, wenigstens grundlegend mit Python umgehen zu können. Aber seitdem ich pytest installiert habe, fühle ich mich wie der totale Nullchecker!!
Ich habe eine Testfunktion geschrieben, die verschiedene monatliche Wiederholungen erstellt, für einen bestimmten Zeitraum (`search_scope`) Treffer abfragt und deren Startzeitpunkte (`s.begin`) mit einer Liste der korrekten Treffer (`monthday_range`) vergleicht:
Code: Alles auswählen
def test_monthly_monthday():
search_scope = dt.DateTimeScope({'year': 2009, 'month': 6, 'day': 1},
{'year': 2016, 'month': 6, 'day': 30})
for interval, monthday in itertools.product(range(1, 13), range(1, 32)):
recurrence_ = recurrence.MonthlyRecurrence(
**{'base': dt.DateTimeScope({'year': 2009, 'month': 12, 'day': 28},
{'year': 2009, 'month': 12, 'day': 30}),
'interval': interval, 'monthday': monthday})
assert (
[s.begin for s in recurrence_.query(search_scope)] ==
[datetime_ for datetime_ in
monthday_range((2009, 12), (2016, 6), monthday, interval)]
)Code: Alles auswählen
assert left == right, infoMit der pytest Dokumentation komm' ich auch nicht wirklich klar, die setzt IMHO viel zu viel Test-Vorwissen voraus.
mutetella