Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image

Vous pouvez tester le téléchargement même si vous placez le fichier image localement, mais pour le compléter dans le code de test.

Créer un exemple d'application

(python2.7, django1.6)

$ django-admin.py startproject core
$ mv core photo_book
$ cd photo_book
$ python manage.py startapp photos
$ mkdir -p static/upload  #Répertoire pour enregistrer les images

core/

settings.py


#Seulement des pièces supplémentaires
IINSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'photos',  #ajouter à
)

MEDIA_ROOT = os.path.join(BASE_DIR, 'static/')  #ajouter à

urls.py


from django.conf.urls import patterns, include, url

from django.contrib import admin
admin.autodiscover()

from photos.views import ImageCreateView

urlpatterns = patterns(
    '',
    url(r'^images/$', ImageCreateView.as_view(), name='images'),
    url(r'^admin/', include(admin.site.urls)),
)

photos/

modèle

models.py


from django.db import models


class Photo(models.Model):
    image = models.ImageField(upload_to='upload')

Forme

forms.py


from django import forms


class PhotoForm(forms.Form):
    image = forms.ImageField()

Vue

views.py


from django.views.generic.edit import CreateView

from photos.models import Photo


class ImageCreateView(CreateView):
    model = Photo
    success_url = '/'

tester

test.py


from StringIO import StringIO

from django.core.urlresolvers import reverse
from django.test import TestCase
from photos.models import Photo


class CreateImageTest(TestCase):
    def test_post(self):
        url = reverse("images")

        dummy_image = StringIO(
            'GIF87a\x01\x00\x01\x00\x80\x01\x00\x00\x00\x00ccc,\x00'
            '\x00\x00\x00\x01\x00\x01\x00\x00\x02\x02D\x01\x00;'
        )
        dummy_image.name = 'dummy_image.gif'
        dummy_image.content_type = 'image/gif'
        response = self.client.post(url, {'image': dummy_image})

        self.assertEqual(response.status_code, 302)
        #Vérifiez s'il a été enregistré dans la base de données
        self.assertEqual(Photo.objects.count(), 1)
        #Vérifiez si l'image enregistrée et l'image factice téléchargée sont identiques
        uploaded_image = StringIO(open(Photo.objects.last().image._get_path(), 'rb').read())
        self.assertEqual(uploaded_image.getvalue(), dummy_image.getvalue())

Essai

$ python manage.py test
Creating test database for alias 'default'...
.
----------------------------------------------------------------------
Ran 1 test in 0.042s

OK
Destroying test database for alias 'default'...

référence

Recommended Posts

Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
Créer un projet et une application Django dans un environnement virtuel Python et démarrer le serveur
Créer un fichier binaire en Python
Créer une portée locale en Python sans polluer l'espace de noms
Créez une image factice avec Python + PIL.
Ecrire le test dans la docstring python
Analysez l'API Researchmap avec Python et créez automatiquement un fichier Word pour la liste des succès
[GPS] Créer un fichier kml avec Python
Créez un environnement de test Vim + Python en 1 minute
Créer un fichier GIF en utilisant Pillow en Python
Comment créer un fichier JSON en Python
Créez un fichier MIDI en Python en utilisant pretty_midi
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 1 ~
[Django] Implémenter une fonction de téléchargement de fichier image qui n'utilise pas de modèle
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 2 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 3 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 4 ~
[CRUD] [Django] Créer un site CRUD en utilisant le framework Python Django ~ 5 ~
Créer une fonction en Python
Créer un dictionnaire en Python
Créez un fichier exe qui fonctionne dans un environnement Windows sans Python avec PyInstaller
[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery
[Django] Test pour envoyer un fichier par POST et vérifier le contexte retourné [TDD]
Créer un fichier de données factice
Enregistrez le modèle pystan et les résultats dans un fichier pickle
[python] Remplacez le nom du fichier image par un numéro de série
Changer la destination de sortie standard en un fichier en Python
Obtenez le type MIME en Python et déterminez le format de fichier
[Note] Importation de fichiers dans le répertoire parent en Python
J'ai essayé de programmer le test du chi carré en Python et Java.
Créez le code qui renvoie "A et prétendant B" en python
Créez un fichier dox avec des vignettes des photos dans le dossier en utilisant la bibliothèque Python python-docx et le logiciel gratuit «Réduction uniquement».
Enregistrez le fichier binaire en Python
Créer un conteneur DI avec Python
Créez Gmail en Python sans utiliser l'API
Créer une chaîne aléatoire en Python
Créer un téléchargeur de fichiers avec Django
Créer et lire des paquets de messages en Python
Créer un bot LINE avec Django
Créez un fichier temporaire avec django sous forme de zip et renvoyez-le
[Python / Django] Créer une API Web qui répond au format JSON
Créez un script shell pour exécuter le fichier python plusieurs fois
Spécifiez ou créez un dossier python, puis enregistrez la capture d'écran.
Créez un lot planifié simple à l'aide de l'image Python de Docker et de parse-crontab
Lisez le fichier en Python avec un chemin relatif depuis le programme
Creusez le répertoire et créez une liste de chemins de répertoire + noms de fichiers
Obtenez la formule dans le fichier Excel sous forme de chaîne en Python
Remplacez le nom du répertoire et le nom du fichier dans le répertoire par une commande Linux.
Créez des raccourcis pour exécuter des fichiers Python sur le terminal avec VScode
Un mémo organisé en renommant les noms de fichiers dans le dossier avec python
Configurer un serveur SMTP factice avec Python et vérifier le fonctionnement de l'envoi depuis Action Mailer
Créer une application GUI simple en Python
[Python] Créez un linebot pour écrire le nom et l'âge sur l'image
Ecrire le fichier O_SYNC en C et Python
Exécuter l'interpréteur Python dans le script