Uczę się, jak testowanie odbywa się w Pythonie za pomocą py.test
. Próbuję przetestować konkretną sytuację, która jest dość powszechna podczas korzystania z innych bibliotek, takich jak mock
. W szczególności testowanie, że funkcja lub metoda wywołuje inny wywoływacz z poprawnymi argumentami. Nie jest wymagana żadna wartość zwracana, tylko potwierdzenie, że testowana metoda prawidłowo wywołuje wywołanie.Jak przetestować funkcję jest wywoływana z poprawnymi argumentami z pytest?
Oto przykład prosto z docs:
>>> class ProductionClass:
... def method(self):
... self.something(1, 2, 3)
... def something(self, a, b, c):
... pass
...
>>> real = ProductionClass()
>>> real.something = MagicMock()
>>> real.method()
>>> real.something.assert_called_once_with(1, 2, 3)
Czy można to zrobić przy użyciu monkeypatch
lub fixtures
od py.test
, bez skutecznie pisać własne szydzili klasę? Szukałem tego konkretnego przypadku użycia, ale nie mogłem znaleźć przykładu. Czy py.test
zachęca do alternatywnego sposobu wykonywania kodu w ten sposób?
Dziwne, że taka podstawowa funkcjonalność do testowania jednostek nie jest wyjęta z pudełka. –