[PYTHON] Django Note 5

9 Django Test

9.1 Einführung in die Datenbank

Bereiten Sie beim Testen eine neue Datenbank zum Testen vor, anstatt eine vorhandene Datenbank zu verwenden. Nach dem Ausführen aller Tests wird die Datenbank gelöscht. Wenn Sie test in shell ausführen, können Sie den Parameter -keepdb hinzufügen, um die Testdatenbank zu verlassen.

9.2 Wie schreibe ich?

Zum Beispiel

models.py


from django.db import models
import django.utils.timezone as timezone

class File(models.Model):
    username = models.CharField(max_length=200)
    filename = models.CharField(max_length=200)
    fileshortname = models.CharField(max_length=200)
    filetype = models.CharField(max_length=200)
    filedata = models.FileField(upload_to='files')
    filepic = models.ImageField(null=True, upload_to='covers')
    uploadtime = models.DateTimeField('updated time', default = timezone.now)
    tags = models.ManyToManyField(Tag)

    def __str__(self):
        return self.filename

    def setFileType(self):
        if self.filename is None:
            self.filetype = None
        else:
            e = self.filename.split('.')[-1]
            self.filetype = e

tests.py


from django.test import TestCase
from models import File

class FileTestCase(TestCase):
    def test_setfiletype_when_can_not_Splited(self):
        testfileobj = File.objects.create(filename='testfile')
        testfileobj.setFileType()
        self.assertIsNone(testfileobj.fileshortname)

Die Django TestCase-Klasse erbt von Python.unittest. Verwenden Sie daher assertEqual, assertTrue, assertIs usw., um Ihren Testcode zu schreiben.

9.3 Django View Test Tool

tests.py


from django.test import TestCase
from models import File, Tag

class FileTestCase(TestCase):
    ...
    def test_no_file(self):
        response = self.client.get('/')
        self.assertEqual(response.status_code, 200)
    def test_upload_large_file(self):
        #Im voraus vorbereiten
        with open('testfile.dat') as fd
        response = self.client.post('upload/', {'filedata':fd, 'fileshortname':'test', 'tags': 'test'})
        self.assertEqual(response.status_code, 200)

Mit dem Client können Sie eine einfache Ansicht überprüfen.

Recommended Posts

Django Note 4
Django Note 5
Django Note 1
Django Note 3
Django Note 2
Memo
Memo
Memo
Django Girls Tutorial Hinweis
(Hinweis) Django in Vagrant-Umgebung
Django-Update
pyenv note
[Anmerkung] Django-Projekterstellung und Terminologie
Django Memorandum
Django-Suche
Django Installation
Django Zusammenfassung
Django-Test
Django # 2 (Vorlage)
Django zum Anfassen
Hinweis: Python
Berühre Django
Django Memo
Django Zusammenfassung
Django Grundlagen
Django Shoho
Django Grundeinstellungen
Ansible Note
Django + Docker
Django Glossar
Python-Notiz
Django Installation
[Hinweis] Führen Sie Django unter Amazon Linux 2 aus
Django: Referenzen
Hinweis: Senden Sie eine E-Mail mit Django
direnv note
Django-Start
Django Memo
[Hinweis] RepresenterError
Django NullCharField
Stellen Sie Django api mit Heroku bereit (persönliches Memo)
(Hinweis) Suchreihenfolge der Vorlagendateien in Django
Hinweise zum Aktivieren von PostgreSQL mit Django
DJango Hinweis: Von Anfang an (Formularverarbeitung)
Django Umweltbau
[Hinweis] Ändern der Bildgröße
Python lernen note_002
Django ~ settings.py edition ~
Hinweis: Python-Dekorator
Python-Programmierhinweis
Django Heroku Deploy 1
[Python] Lernnotiz 1
Django HTML Vorlage Teil 2
Django Anfrageformular 2
Django startete Teil 1
Django-Modell: ManyToManyField
Was ist Django? .. ..
Modell in Django
Django funktionsbasierte Ansicht