Jak mogę warunkowo wywołać metodę orignal w pozorowaniu?Kpiny warunkowe: wywołanie oryginalnej funkcji, jeśli warunek jest zgodny z
W tym przykładzie chcę tylko sfałszować wartość zwracaną, jeśli bar=='x'
. W przeciwnym razie chcę wywołać oryginalną metodę.
def mocked_some_method(bar):
if bar=='x':
return 'fake'
return some_how_call_original_method(bar)
with mock.patch('mylib.foo.some_method', mocked_some_method):
do_some_stuff()
Wiem, że to trochę dziwne. Jeśli chcę sfałszować mylib.foo.some_method
na stronie do_some_stuff()
, powinno to być bez warunku. Wszystkie (nie niektóre) połączenia z numerem some_method
powinny zostać wyśmiany.
W moim przypadku jest to test integracyjny, a nie mały unittest i mylib.foo.some_method
to rodzaj dyspozytora, który bardzo często się wykorzystuje. I w jednym przypadku muszę sfałszować wynik.
Co masz na myśli mówiąc "static" tutaj: "Myślę, że some_method is not static ..."? – guettli
Masz rację. makiety jako opakowanie nie jest najlepszą praktyką. Zaktualizowałem pytanie, aby to odzwierciedlić. – guettli
@guettli Z twojego pytania mogę tylko zgadnąć, że 'some_method' nie jest' @ staticmethod', ale metoda obiektowa .... Zmienię swoją odpowiedź, usuwając notatkę boczną, ale powinna już pasować do twoich wymagań. –