9 Django Test
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.
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.
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