9 Django Test
Lors du test, préparez une nouvelle base de données pour le test au lieu d'utiliser une base de données existante. Après avoir exécuté tous les tests, la base de données sera supprimée. Lorsque vous exécutez le test dans le shell, vous pouvez ajouter le paramètre -keepdb pour quitter la base de données de test.
Par exemple
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)
La classe Django TestCase hérite de Python.unittest, utilisez donc assertEqual, assertTrue, assertIs, etc. pour écrire votre code de test.
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):
#Préparez-vous à l'avance
with open('testfile.dat') as fd
response = self.client.post('upload/', {'filedata':fd, 'fileshortname':'test', 'tags': 'test'})
self.assertEqual(response.status_code, 200)
Vous pouvez utiliser le client pour vérifier une vue simple.
Recommended Posts