Sono interessato a testare del codice che utilizza il modulo "random" e vorrei poter applicare/correggere la mia versione falsa di random quando i miei test sono in esecuzione, che restituisce un valore noto e in seguito torna al normale modulo casuale. Dalla documentazione posso solo vedere che posso applicare le patch alle classi. C'è un modo per applicare le patch? Qualcosa del genere:Posso applicare patch 'random' usando unittest.mock.patch?
def my_code_that_uses_random():
return random.choice([0, 1, 2, 3])
with patch.function(random.choice, return_value=3) as mock_random:
choice = my_code_that_uses_random()
assert choice == 3
Quel codice non funziona, cosa mi serve invece?
Se è necessario sostituirlo con una funzione reale è possibile sostituire 'return_value' con:' side_effect = lambda seguenti: ss [0] '. Questo ti consentirà di testare il passaggio di sequenze e ottenere elementi. In questo caso, sceglierà sempre il primo elemento. – phoenix