Próbuję napisać prosty test jednostkowy, który sprawdzi, czy pod pewnymi warunkami klasa w mojej aplikacji zarejestruje błąd za pomocą standardowego interfejsu API do rejestrowania. Nie mogę się domyślić, jaki jest najczystszy sposób na sprawdzenie tej sytuacji.Jak powinienem zweryfikować komunikat dziennika podczas testowania kodu Pythona pod nosem?
Wiem, że nos przechwytuje już wyniki logowania za pomocą wtyczki do logowania, ale wydaje się, że ma to służyć jako pomoc w raportowaniu i debugowaniu w przypadku nieudanych testów.
Dwa sposoby, aby to zrobić widzę to:
- Mock się moduł rejestrowania, albo w sposób fragmentaryczny (mymodule.logging = mockloggingmodule) lub z odpowiednim biblioteki drwiącym.
- Napisz lub użyj istniejącej wtyczki nosowej, aby przechwycić dane wyjściowe i zweryfikować je.
Jeśli sięgam po pierwsze podejście, chciałbym się dowiedzieć, jaki jest najczystszy sposób resetowania stanu globalnego do stanu sprzed wyłudzenia modułu logowania.
Czekamy na wskazówki na ten jeden ...
Tam jest teraz wbudowany w sposób to zrobić: https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertLogs – wkschwartz