Heim > Backend-Entwicklung > Python-Tutorial > Django-Unit-Test (1)

Django-Unit-Test (1)

高洛峰
Freigeben: 2016-10-17 13:53:45
Original
1178 Leute haben es durchsucht

Das Django-Testframework ist sehr einfach und die bevorzugte Methode ist die Verwendung des Unittest-Moduls in der Python-Standardbibliothek.

Tests schreiben

Djangos Unit-Tests verwenden das Unittest-Modul von Python, das einen klassenbasierten Ansatz zum Definieren von Tests verwendet. Der Klassenname ist django.test.TestCase und wird von Pythons unittest.TestCase geerbt.

from django.test import TestCase
from myapp.models import Animal
  
class AnimalTestCase(TestCase):
    def setUp(self):
        Animal.objects.create(name="lion", sound="roar")
        Animal.objects.create(name="cat", sound="meow")
  
    def test_animals_can_speak(self):
        """Animals that can speak are correctly identified"""
        lion = Animal.objects.get(name="lion")
        cat = Animal.objects.get(name="cat")
        self.assertEqual(lion.speak(), 'The lion says "roar"')
        self.assertEqual(cat.speak(), 'The cat says "meow"')
Nach dem Login kopieren

Beim Ausführen eines Tests sucht das Testprogramm nach allen Testfällen (Unterklassen von inittest.TestCase) in allen Dateien, die mit test beginnen. Erstellen Sie automatisch einen Testsatz und führen Sie dann die Tests aus.

Hinweis: Wenn der Test auf Datenbankzugriff (Lesen, Abfragen des Modells) basiert, verwenden Sie zum Erstellen der Testklasse unbedingt django.test.TestCase anstelle von unittest.TestCase.

Tests ausführen

Alle Tests im Verzeichnis ausführen (alle test*.py-Dateien):

$ python manage.py test

Tiertests ausführen im Tests-Paket unter dem Projekt:

$ python manage.py test Animals.tests

Führen Sie Testtests im Tierprojekt aus:

$ python manage.py test Animals

Einen Testfall einzeln ausführen:

$ python manage.py test Animals.tests.AnimalTestCase

Eine Testmethode einzeln ausführen:

$ python manage .py test Animals.tests.AnimalTestCase.test_animals_can_speak

Pfad zur Testdatei angeben:

$ python manage.py test Animals/

Name der Platzhalter-Testdatei:

$ python manage.py test --pattern="tests_*.py"

Warnungen aktivieren:

$ python -Wall manage.py test

Datenbank

Für Tests ist eine Datenbank erforderlich, und Django generiert eine separate Datenbank für den Test. Unabhängig davon, ob Ihre Tests erfolgreich sind oder nicht, wird die Testdatenbank zerstört, wenn alle Ihre Tests ausgeführt wurden.

Standardmäßig lautet der Name der Testdatenbank test_DATABASE_NAME und DATABASE_NAME ist der Datenbankname, den Sie in „settings.py“ konfiguriert haben. Wenn Sie der Testdatenbank einen anderen Namen geben müssen, geben Sie den Wert von TEST_DATABASE_NAME in den Einstellungen an. py . Bei Verwendung von sqlite3 wird die Datenbank im Speicher erstellt.

Abgesehen davon, dass die Datenbank separat erstellt wird, verwendet das Testtool dieselbe Datenbankkonfiguration – DATABASE_ENGINE, DATABASE_USER, DATABASE_HOST usw. Der Benutzer, der die Testdatenbank erstellt hat, wird durch DATABASE_USER (in den Einstellungen) angegeben, also Sie Sie müssen bestätigen, dass DATABASE_USER über ausreichende Berechtigungen zum Erstellen der Datenbank verfügt.

Testausführungsreihenfolge

Um sicherzustellen, dass alle Tests mit einer sauberen Datenbank beginnen, ist die Ausführungsreihenfolge wie folgt:

1 Alle TestCase-Unterklassen werden zuerst ausgeführt.

2. Alle anderen Unit-Tests (unittest.TestCase, SimpleTestCase, TransactionTestCase).

3. Andere Tests (z. B. Doctests usw.)

Beschleunigtes Testen

Sie können PASSWORD_HASHERS auf einen schnelleren Algorithmus einstellen:

PASSWORD_HASHERS = (
    'django.contrib.auth.hashers.MD5PasswordHasher',
)
Nach dem Login kopieren


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage