Esercitazione su PyUnit: Python Framework di unit test (con esempio)

Cos'è il test unitario?

Test unitari in Python viene fatto per identificare i bug nelle prime fasi 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à. Il test unitario è un framework orientato agli oggetti basato su dispositivi di test.

Python Tecniche di test unitario

Python Il test unitario prevede 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.

  • TDD di sviluppo basato sui test: Il test unitario dovrebbe essere eseguito insieme a Pythone per questo gli sviluppatori utilizzano il metodo di sviluppo basato sui test. Nel metodo TDD, per prima cosa progetti Python Unit test 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. UN mozzicone viene utilizzato per compilare alcune dipendenze richieste per il corretto funzionamento del test unitario. UN finto 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 Quadro di test unitario

Per semplificare il processo di unit testing e migliorare la qualità del progetto, si consiglia il Python Quadro di test unitario. Il framework Unit Testing include

Python Tecniche di test unitario

  • Unità Py: PyUnit supporta dispositivi, casi di test, suite di test e un test runner per il test automatizzato del codice. In PyUnit, puoi organizzare i casi di test in suite con le stesse apparecchiature
  • Al naso: I plug-in integrati di Nose ti aiutano con l'acquisizione dell'output, la copertura del codice, i doctest, ecc. La sintassi di Nose è piuttosto semplice e riduce le barriere alla scrittura dei test. Si estende Python unittest per semplificare i test.
  • 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 restituiscano i risultati attesi. Il caso d'uso di doctest è meno dettagliato e non rileva casi speciali. Sono utili come documentazione espressiva del caso d'uso principale di un modulo e dei suoi componenti.

Test unitari con PyUnit

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

Test unitari con PyUnit

  • Classe TestCase: La classe TestCase supporta le routine di test e fornisce gli hook per creare ciascuna routine e ripulirla successivamente
  • Classe TestSuite: Funziona come un contenitore di raccolta e può possedere più oggetti testcase e più oggetti testsuites
  • Classe TestLoader: questa classe carica casi di test e suite definiti localmente o da un file esterno. Emette oggetti di testsuite che possiedono quelle suite e quei casi
  • Classe TextTestRunner: Per eseguire i test prevede una piattaforma standard per eseguire i test
  • La classe TestResults: Offre un contenitore standard per i risultati dei test

Progettare un caso di test per Python Test utilizzando PyUnit

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

Progettare un caso di test per Python

unittest.TestCase

setUp()
teardown()

skipTest(aMesg:string)
fail(aMesg:string)

id():string
shortDescription():string

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

Il secondo set 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 della routine di test. E il metodo è breveDescription() restituisce il commento docstr all'inizio di ogni routine di test.

Vantaggi dell'uso Python Test unitari

  • 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 modificarlo in futuro con conseguenze molto minori