[PYTHON] [Django] Test pour envoyer un fichier par POST et vérifier le contexte retourné [TDD]

Je veux tester une page avec un formulaire!

Comme je l'ai dit dans l'article précédent (https://qiita.com/NomuK3/items/245b2070cd290d911294), je voudrais faire un test pour une page avec un formulaire. Mais pour une raison quelconque, j'ai eu une erreur et je n'ai pas pu tester. J'ai pensé que je devrais tester le formulaire pour le moment, mais quand j'y ai pensé, je n'ai pas pu tester le traitement après cela, donc cela n'a pas aidé. Après tout, je dois POSTER et vérifier le contexte.

Quelle était la solution et quelle était-elle?

La solution est la suivante. Tout ce que j'avais à faire était de l'ouvrir avec open, d'insérer le gestionnaire de fichiers et de le POSTER.

tests.py


from django.test import TestCase, Client
from django.contrib.auth.models import User

class Test_Model_Create(TestCase):
    def setUp(self):
        #Créer un utilisateur de test
        self.user = User.objects.create_user(username='tdd', email='[email protected]', password='test_pass') 
        self.client=Client()
        #S'identifier
        self.client.login(username='tdd', password="test_pass")  

    def test_step1(self):      
        with open('./path/test.csv') as f:  
            data = {
                "nametest" : "test",
                "file_data" : f
            }
            response = self.client.post('/model_create/form/', data)
        self.assertIn('file_data', response.context, "fichier en contexte_les données ne sont pas incluses")

C'est bon comme ça.

Le point qui était bloqué est

C'était la raison. J'ai également essayé d'utiliser RequestFactory au lieu de Client, mais c'était la raison ...

Test de téléchargement de fichiers multiples

Au fait, je dois donner deux fichiers cette fois, mais dans un tel cas, il semble que je puisse écrire comme ci-dessous.

tests.py


        with open('./path/testA.csv') as fa,open('./path/testB.csv') as fb:    
            data = {
                "name" : "test",
                "file_dataA" : fa,
                "file_dataB" : fb
            }
            response = self.client.post('/model_create/form/', data)

La phrase avec est vraiment facile. C'est incroyable.

Résumé

Je me demande vraiment pourquoi j'étais si inquiet. Je veux réduire les Pokamis.

Recommended Posts

[Django] Test pour envoyer un fichier par POST et vérifier le contexte retourné [TDD]
[Django] Je voulais tester lors du POST d'un fichier volumineux [TDD]
Je souhaite recevoir le fichier de configuration et vérifier si le fichier JSON généré par jinja2 est un JSON valide
Créer en Python sans fichier image factice dans Django et tester le téléchargement de l'image
[Django] Comment tester le formulaire [TDD]
Django super introduction par les débutants Python! Partie 3 J'ai essayé d'utiliser la fonction d'héritage de fichier de modèle
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai essayé de vérifier le résultat du test A / B avec le test du chi carré
Comment vérifier la version de Django
La route pour lutter contre la connexion entre Nginx, Django et uwsgi et gagner un peu
Comment compter le nombre d'éléments dans Django et sortir dans le modèle
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
Je veux écrire un élément dans un fichier avec numpy et le vérifier.
Utilisez la commande [shell] pour compresser par zip n'importe quel fichier pour créer un fichier et supprimer le fichier d'origine.
La première chose à vérifier quand un No Reverse Match se produit dans Django
J'ai essayé de passer le test G et la qualification E en m'entraînant à partir de 50
Enregistrer l'objet dans un fichier avec pickle
Mettez le fichier téléchargé par django dans MinIO
[Python] Vous pouvez enregistrer un objet dans un fichier en utilisant le module pickle.
Créez un fichier audio avec la fonction de synthèse vocale de Google Text To Speak et vérifiez le texte comme guide de parole pendant 3 minutes.
Création d'un module pour surveiller les mises à jour des fichiers et des URL
Lisez le fichier xml en vous référant au didacticiel Python
Comment savoir quelle version de Java Maven utilise
Transition vers l'écran de mise à jour avec le Django a tag
Comment publier un ticket depuis l'API Shogun
Sortie d'un vidage binaire en binaire et retour dans un fichier binaire
Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion
Python --Lisez des données à partir d'un fichier de données numériques pour trouver des matrices, des valeurs propres et des vecteurs propres distribués co-distribués
Comment créer un enregistrement en collant une relation au modèle source d'héritage dans le modèle hérité par Django
Comment envoyer des fichiers d'un seul coup en se connectant à un hôte de l'autre côté de la plate-forme avec SCP en plusieurs étapes