2015-02-25 8 views
5

Per un dato file python che ha le seguenti righe nella parte superiore:Python unittest: come soddisfare la copertura del naso per l'importazione di pacchetti

import traceback 
import datetime 
from django.contrib.contenttypes import generic 
from django.contrib.contenttypes.models import ContentType 
from django.db import models 
from django.conf import settings 

Come faccio a scrivere test di unità che si tradurrà in naso non mostrano 'Missing 'per quelle linee?

+0

Puoi essere più specifico? Cosa sta mostrando come mancante? Intendi rapporto sulla copertura? – Oleksiy

+0

Supponendo che le righe di codice nel mio post siano le prime sei righe di un file, la copertura del naso mostrerebbe quelle linee come copertura del codice mancante. Mi piacerebbe sapere come scrivere test per coprire quelle linee. – Duncan

+2

Sembra che la copertura venga avviata dopo l'importazione del file. Mostra come esegui i test. –

risposta

0

Penso che se queste righe mancano nella copertura del codice, significa che questo modulo non è mai stato utilizzato o importato. Tali righe verranno visualizzate come coperte nel report purché si riesca a importare quei moduli e non sono necessari test aggiuntivi per convalidare la capacità di importare quei moduli django ben testati. Finché hai un singolo test che verifica qualcosa in quel modulo, dovresti stare bene. Per esempio:

import traceback 
import datetime 
# from django.contrib.contenttypes import generic 
# from django.contrib.contenttypes.models import ContentType 
from django.db import models 
from django.conf import settings 


def foo(a): 
    return a + 5 


def test_foo(): 
    assert foo(5) == 10 

si tradurrà in una copertura del 100% durante l'esecuzione sotto il naso con --with-coverage opzione per questo particolare file. Ho commentato i pacchetti django.contrib perché non sto usando django-nose e non ho le impostazioni corrette per questo esempio, ma non dovrebbe avere importanza.

+0

So che questo è vecchio, ma ora ho lo stesso problema, e in realtà il modulo è già importato perché ho delle linee verdi all'interno dei metodi delle classi definite in questo modulo. Per me è in qualche modo impossibile chiamare un metodo da una classe senza importarlo prima, ma il naso pensa che sia esattamente quello. –

Problemi correlati