PyUnit Tutorial: Python Unit Testing Framework (con esempio)

Sommario:

Anonim

Cos'è lo Unit Testing?

Gli unit test in Python vengono eseguiti per identificare i bug all'inizio della fase di sviluppo dell'applicazione quando i bug sono meno ricorrenti e meno costosi da correggere.

Uno unit test è un test a livello di codice con script progettato in Python per verificare una piccola "unità" di funzionalità. Lo unit test è un framework orientato agli oggetti basato su dispositivi di test.

Tecniche di unit test di Python

Python Unit Testing implica principalmente il test di un particolare modulo senza accedere ad alcun codice dipendente. Gli sviluppatori possono utilizzare tecniche come stub e mock per separare il codice in "unità" ed eseguire test a livello di unità sui singoli pezzi.

  • Sviluppo basato su test TDD: gli unit test devono essere eseguiti insieme a Python e per questo gli sviluppatori utilizzano il metodo di sviluppo guidato da test. Nel metodo TDD, prima si progettano gli unit test Python e solo dopo si continua a scrivere il codice che implementerà questa funzionalità.
  • Stub e Mock: sono due tecniche principali che simulano metodi falsi che vengono testati. Uno stub viene utilizzato per compilare alcune dipendenze richieste per il corretto funzionamento di unit test. Un Mock d'altra parte è un oggetto falso che esegue i test in cui mettiamo assert.

    Le intenzioni di entrambi i metodi sono le stesse per eliminare il test di tutte le dipendenze di una classe o funzione.

Python Unit Testing Framework

Per rendere il processo di Unit Testing più semplice e migliorare la qualità del tuo progetto, si consiglia Python Unit Testing Framework. Il framework di Unit Testing include

  • PyUnit: PyUnit supporta fixture, test case, test suite e un test runner per il test automatizzato del codice. In PyUnit, puoi organizzare i casi di test in suite con gli stessi dispositivi
  • Nose: i plug-in incorporati di Nose ti aiutano con l'acquisizione dell'output, la copertura del codice, i doctest, ecc. La sintassi di Nose è molto più semplice e riduce le barriere alla scrittura dei test. Estende Python unittest per rendere i test più facili.
  • Doctest: lo script di test di Doctest va in docstring con una piccola funzione in fondo al file. Doctest ti consente di testare il tuo codice eseguendo esempi inclusi nella documentazione e verificando che abbiano restituito i risultati attesi. Il caso d'uso di doctest è meno dettagliato e non cattura casi speciali. Sono utili come documentazione espressiva del caso d'uso principale di un modulo e dei suoi componenti.

Test unitario con PyUnit

Pyunit è un port Python di JUnit. Come parte di Pyunit, nel modulo unittest ci sono cinque classi chiave.

  • Classe TestCase : la classe TestCase supporta le routine di test e fornisce ganci per creare ogni routine e ripulire successivamente
  • Classe TestSuite : si rivolge come contenitore di raccolta e può possedere più oggetti testcase e più oggetti testuites
  • Classe TestLoader : questa classe carica i casi di test e le suite definite localmente o da un file esterno. Emette una suite di prova oggetti che possiede quelle suite e casi
  • Classe TextTestRunner : per eseguire i test si rivolge a una piattaforma standard per eseguire i test
  • La classe TestResults : offre un contenitore standard per i risultati del test

Progettazione di un test case per Python Testing utilizzando PyUnit

Uno unit test fornisce una classe base, test case, che può essere utilizzato per creare nuovi test case. Per progettare lo scenario di test, ci sono tre serie di metodi utilizzati

unittest.TestCase

setUp()teardown()skipTest(aMesg:string)fail(aMesg:string)id():stringshortDescription():string

Nel primo set ci sono i ganci pre e post test. Il metodo setup () inizia prima di ogni routine di test, il teardown () dopo la routine.

La seconda serie di metodi controlla l'esecuzione del test. Entrambi i metodi accettano una stringa di messaggio come input ed entrambi annullano un test in corso. Ma il metodo skiptest () interrompe il test corrente mentre il metodo fail () lo fallisce completamente.

L'ultimo o il terzo metodo aiutano a determinare il test. Il metodo id () restituisce una stringa composta dal nome dell'oggetto testcase e dalla routine di test. E il metodo shortDescription () restituisce il commento docstr all'inizio di ogni routine di test.

Vantaggi dell'utilizzo degli unit test di Python

  • Ti aiuta a rilevare i bug nelle prime fasi del ciclo di sviluppo
  • Ti aiuta a scrivere programmi migliori
  • Si sincronizza facilmente con altri metodi e strumenti di test
  • Avrà molti meno bug
  • È più facile modificare in futuro con conseguenze molto minori