Python Autospec Dorme

Python Autospec Dorme
“Quando si sviluppano test, le beffarini e le derche sono incredibilmente utili poiché consentono di separare il riferimento fatto dalle sue dipendenze, risultando in un minor numero di test fragili. Includendo i dombi nei test unitari, possiamo essere certi che eventuali guasti saranno causati da una modifica di come viene implementato l'obiettivo del test. La configurazione dei mock, tuttavia, può comportare test che passano quando devono fallire. All'interno di questo articolo, utilizzeremo alcuni esempi per illustrare il funzionamento dell'autospazio in Python."

Esempio 01

Cominciamo con la prima illustrazione. La calcolatrice.Il modulo PY include le successive righe di codice. Nella prima riga, abbiamo definito l'aggiunta della funzione e moltiplicato per il calcolatore di classe. Due numeri vengono moltiplicati insieme usando la seconda funzione denominata "multiplica"; Allo stesso modo, la prima funzione viene utilizzata per ottenere la somma dei due numeri. Entrambe le funzioni restituiscono solo l'aggiunta e alcuni dei numeri forniti; Non stampano alcun output.

Abbiamo creato due funzioni del modulo al di fuori della classe in cui vengono creati oggetti di classe del tipo di calcolatrice e i metodi di aggiunta e moltiplicazione della classe calcolatrice sono chiamati. Verifica il codice nell'immagine apposta.

La somma e la moltiplicazione funzionano dal calcolatore.Il modulo PY verrà utilizzato nel modulo semplice che stiamo costruendo, calcolatrice del test.Py. Il codice è incredibilmente semplice; Stiamo solo importando i metodi di moltiplicazione e somma dal modulo calcolatore. Successivamente, abbiamo eseguito la funzione di somma e fornito i 2 e 5 come parametri.

Simile a come abbiamo chiamato la funzione di moltiplicazione, abbiamo passato i parametri 5 e 3 in questa funzione del modulo. Usando l'istruzione di stampa, visualizziamo l'output che queste funzioni restituiscono. Verifica il codice nell'immagine apposta.

Esegui il test_calculator.Modulo PY a questo punto per vedere i risultati. Sebbene sia possibile utilizzare qualsiasi altro strumento, stiamo scrivendo e eseguendo il codice utilizzando lo strumento Spyder 3. L'output nel terminale dello strumento Spyder è visibile, come puoi vedere. Usando il calcolatore.Classe PY, l'output di moltiplicazione della funzione è 15 e la sua uscita di somma è 7, che è il risultato previsto.

Esempio 02

Ora andiamo a un test per somma e moltiplicazione, ma supponiamo che dobbiamo deridere l'aggiunta e moltiplicare le funzioni. Duggermi e le bettute sono molto utili quando stiamo scrivendo test per i nostri moduli perché ci consentono di isolare gli obiettivi di test dalle loro dipendenze che causano test meno fragili. Se utilizziamo dombi nei nostri test unitari, eventuali test che falliscono lo faranno a causa di una modifica apportata all'implementazione del target.

Tuttavia, possiamo costruire il mockup in un modo che potrebbe impedire ai test di fallire quando dovrebbero farlo! Aggiorniamo il nostro test_calculator.Modulo PY per aggiungere codice mockup ad esso. L'istantanea del codice è mostrata di seguito:

Quando viene eseguito, questo test facile ha esito positivo. Specificare implica la costruzione di un oggetto finto con la stessa API/Struttura dell'oggetto deriso, uno che fallisce se viene utilizzato in un modo che si discosta dalla specifica. La funzione create_autospec nel modulo simulato è il primo di due metodi per realizzare questo. Costruiamo un oggetto finto usando la specifica della funzione data. Verifica il codice nell'immagine apposta.

Usando un altro oggetto come specifica, viene creato un oggetto simulato usando la funzione Crea AutoSpec. La firma di tutte le funzioni che vengono chiamate nella finta è prima verificata. Ciò è vantaggioso perché la funzione simulata ora si basa sulla vera implementazione e incontreremo un problema se la versione cambia e il calcolatore non rispetta le firme delle persone a carico.

Quando eseguiamo il codice di cui sopra per il test unitario, non troviamo alcun errore durante l'esecuzione. Significa che abbiamo superato il test. Ora abbiamo aggiornato il codice e aggiunto solo poche righe. Abbiamo passato la funzione di moltiplicazione alla funzione Create_Autospace e salvato l'output dal moltiplicamento. Verifica il codice nell'immagine apposta.

Quando chiamiamo la funzione per moltiplicare con un singolo parametro ed eseguire il codice quindi, solleva un errore nella schermata di output come indicato di seguito:

Se non passiamo alcun parametro a questa funzione, chiede all'utente di inserire i valori NUM1 e NUM2. Verifica il codice nell'immagine apposta.

Ecco lo screenshot dell'esecuzione del codice:

Quando passiamo entrambi gli argomenti Num1 e Num2, il test di cui sopra viene eseguito correttamente; Le modifiche nei codici possono essere visualizzate nella schermata seguente:

Come abbiamo discusso in precedenza, Create_autospec è un metodo per farlo, ma un altro è impostare Autospec = true quando si utilizza il decoratore patch per simulare un oggetto. Ritorneremo al modulo test_calcolator e aggiorneremo il codice come indicato di seguito screenshot. Le prime due righe sono già state utilizzate in diversi casi. Il nome della funzione del modulo e il valore vero per l'autSpec sono stati passati a @Mock.Metodo del percorso nella terza riga di codice.

Nella destra seguente, abbiamo definito una funzione che viene chiamata test_multiply in cui abbiamo superato la variabile dell'oggetto simulato; Più tardi, dobbiamo usare la stessa variabile per chiamare la funzione multiplica. C'è una riga in questo codice che contiene un errore che è il 6th riga perché dobbiamo utilizzare la funzione mockup per funzionare invece di utilizzare direttamente la funzione di moltiplicazione. Verifica il codice nell'immagine apposta.

Ecco il codice aggiornato. Quando eseguiamo questo test unitario, non riceviamo alcun errore, il che significa che questo test viene superato. Verifica il codice nell'immagine apposta.

Conclusione

Si tratta dell'uso di Python Autospec che deridisce in alcuni dei nostri esempi di Python eseguiti nello strumento SPYDER 3 Python. Tutti gli esempi utilizzati in questo articolo sono facili da fare e imparare. Quindi, cerca di non perdere nessuno di questi per avere una migliore comprensione.