2015-02-25 11 views
5

Für eine bestimmte Python-Datei importieren, die die folgenden Zeilen an der Spitze hat:Python Unittest: Wie die Nase Abdeckung erfüllen für Pakete

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 

Wie schreibe ich Unit-Tests, die in der Nase nicht zeigen ‚fehlen führen "Für diese Zeilen?

+0

Können Sie genauer sein? Was zeigt sich als vermisst? Meinst du Deckungsbericht? – Oleksiy

+0

Unter der Annahme, dass die Codezeilen in meinem Beitrag die ersten sechs Zeilen einer Datei sind, würde die Nasenabdeckung diese Zeilen als fehlende Codeabdeckung anzeigen. Ich würde gerne wissen, wie man Tests schreibt, um diese Zeilen zu erfassen. – Duncan

+2

Es klingt, als ob die Coverage nach dem Import der Datei gestartet wird. Zeigen Sie, wie Sie Ihre Tests ausführen. –

Antwort

0

Ich denke, wenn diese Zeilen in der Codeabdeckung fehlen, bedeutet dies, dass dieses Modul nie verwendet oder importiert wurde. Diese Zeilen werden wie im Bericht behandelt angezeigt, solange Sie diese Module erfolgreich importieren, und es sind keine zusätzlichen Tests erforderlich, um die Fähigkeit zu überprüfen, diese gut getesteten django-Module zu importieren. Solange Sie einen einzelnen Test haben, der etwas in diesem Modul testet, sollten Sie in Ordnung sein. Zum Beispiel:

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 

werden in 100% Deckung führen, wenn sie unter der Nase mit --with-coverage Option für diese Datei ausgeführt wird. Ich habe django.contrib Pakete auskommentiert, weil ich django-nose nicht verwende und keine richtigen Einstellungen für dieses Beispiel habe, aber das sollte nicht wichtig sein.

+0

Ich weiß, dass dies alt ist, aber jetzt habe ich das gleiche Problem, und tatsächlich ist das Modul bereits importiert, weil ich grüne Linien innerhalb Methoden der Klassen in diesem Modul definiert haben. Für mich ist es irgendwie unmöglich, eine Methode aus einer Klasse aufzurufen, ohne sie vorher zu importieren, aber die Nase denkt, dass es genau das ist. –