[PYTHON] Django Note 5

9 Django Test

9.1 Introduction à la base de données

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.

9.2 Comment écrire

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.

9.3 Outil de test de Django View

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

Django Note 4
Django Note 5
Django Note 1
Django Note 3
Django Note 2
Note
Note
Note
Note du didacticiel Django Girls
(Note) Django dans l'environnement Vagrant
mise à jour de Django
note de pyenv
[Note] Création et terminologie du projet Django
Mémorandum Django
recherche django
Installation de Django
Résumé de Django
Test Django
Django # 2 (modèle)
Django Hands On
Remarque: Python
Touchez django
Mémo Django
Résumé de Django
Les bases de Django
Django Shoho
Paramètres initiaux de Django
Note d'Ansible
Django + Docker
Glossaire Django
Note de Python
Installation de Django
[Note] Exécutez Django sur Amazon Linux 2
Django: Références
Remarque: envoyer un e-mail avec Django
note de direnv
Démarrage de Django
Mémo Django
[Note] RepresenterError
Django NullCharField
Déployer l'API Django avec heroku (mémo personnel)
(Remarque) Ordre de recherche des fichiers modèles dans Django
Remarques sur l'activation de PostgreSQL avec Django
Remarque DJango: depuis le début (traitement de formulaire)
Construction de l'environnement Django
[Note] Redimensionnement de l'image
Note d'apprentissage Python_002
Django ~ édition settings.py ~
Remarque: décorateur Python
Note de programmation Python
Django Heroku Deploy 1
[Python] Note d'apprentissage 1
Modèle HTML Django partie 2
Formulaire de demande Django 2
Django a commencé la partie 1
Modèle Django: ManyToManyField
Qu'est-ce que Django? .. ..
Modèle dans Django
Vue basée sur les fonctions Django