Come posso chiamare condizionatamente il metodo dell'originale in una simulazione?Mocking condizionale: chiamare la funzione originale se la condizione corrisponde a
In questo esempio, desidero solo falsificare un valore restituito se bar=='x'
. Altrimenti voglio chiamare il metodo originale.
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()
So che è un po 'strano. Se voglio simulare do_some_stuff()
nel lato , dovrebbe essere senza condizione. Tutte le chiamate (non alcune) a some_method
devono essere prese in giro.
Nel mio caso si tratta di un test di integrazione, non di un s minuscolo all-in-one e mylib.foo.some_method
è una sorta di dispatcher che viene utilizzato molto spesso. E in un caso ho bisogno di falsificare il risultato.
Cosa intendi con "statico" qui: "Immagino che some_method non sia statico ..."? – guettli
Hai ragione. fingere come wrapper non è la migliore pratica. Ho aggiornato la domanda per riflettere questo. – guettli
@guettli Dalla tua domanda posso solo supporre che 'some_method' non sia' @ staticmethod' ma un metodo a oggetti .... Cambierò la mia risposta rimuovendo la nota a margine, ma dovrebbe già soddisfare i tuoi requisiti. –