Sto usando la libreria Python mock
. So come deridere un metodo istanza classe seguendo il document:Variabile istanza classe mock Python
>>> def some_function():
... instance = module.Foo()
... return instance.method()
...
>>> with patch('module.Foo') as mock:
... instance = mock.return_value
... instance.method.return_value = 'the result'
... result = some_function()
... assert result == 'the result'
Tuttavia, ha cercato di deridere una variabile istanza classe ma non funziona (instance.labels
nell'esempio seguente):
>>> with patch('module.Foo') as mock:
... instance = mock.return_value
... instance.method.return_value = 'the result'
... instance.labels = [1, 1, 2, 2]
... result = some_function()
... assert result == 'the result'
Fondamentalmente voglio instance.labels
sotto some_function
ottenere il valore che voglio. Qualche suggerimento?
Non funziona. Ho ottenuto lo stesso risultato di 'instance.labels = [1, 1, 2, 2]', che è questa variabile mocked non utilizzata da 'some_function'. Nella documentazione sta prendendo in giro il metodo anziché la variabile. – clwen
Aggiornato la mia risposta. Ora mi sono perso perché il tuo codice funziona. – twil
Nel mio codice, 'labels' appare solo dopo aver chiamato qualche funzione. E quella funzione è chiamata all'interno della funzione che voglio testare. Forse è questa la ragione. Finisco per deridere l'inizializzazione della classe in modo che restituisca l'oggetto finto con il comportamento che voglio. – clwen