[PYTHON] [Django] Test zum Senden einer Datei per POST und Überprüfen des zurückgegebenen Kontexts [TDD]

Ich möchte eine Seite mit einem Formular testen!

Wie bereits im vorherigen Artikel (https://qiita.com/NomuK3/items/245b2070cd290d911294) erwähnt, möchte ich einen Test für eine Seite mit einem Formular durchführen. Aber aus irgendeinem Grund habe ich einen Fehler bekommen und konnte nicht testen. Ich dachte, ich sollte das Formular vorerst testen, aber als ich darüber nachdachte, konnte ich die Verarbeitung danach nicht testen, also half es nicht. Immerhin muss ich POST und den Kontext überprüfen.

Was war die Lösung und was war es?

Die Lösung ist wie folgt. Ich musste es nur mit open öffnen, den File-Handler einfügen und POSTEN.

tests.py


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

class Test_Model_Create(TestCase):
    def setUp(self):
        #Testbenutzer erstellen
        self.user = User.objects.create_user(username='tdd', email='[email protected]', password='test_pass') 
        self.client=Client()
        #Einloggen
        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, "Datei im Kontext_Daten sind nicht enthalten")

So ist es okay.

Der Punkt, der feststeckte, ist

Das war der Grund. Ich habe auch versucht, RequestFactory anstelle von Client zu verwenden, aber das war der Grund ...

Test zum Hochladen mehrerer Dateien

Übrigens muss ich diesmal zwei Dateien angeben, aber in einem solchen Fall kann ich wie folgt schreiben.

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)

Das mit Satz ist wirklich einfach. Es ist wunderbar.

Zusammenfassung

Ich frage mich wirklich, warum ich so besorgt war. Ich möchte Pokamis reduzieren.

Recommended Posts

[Django] Test zum Senden einer Datei per POST und Überprüfen des zurückgegebenen Kontexts [TDD]
[Django] Ich wollte testen, wenn ich eine große Datei poste [TDD]
Ich möchte die Einstellungsdatei erhalten und prüfen, ob die von jinja2 generierte JSON-Datei eine gültige JSON ist
Testen Sie das Hochladen von Bildern, indem Sie in Python erstellen, ohne Dummy-Bilddateien in Django zu platzieren
[Django] So testen Sie Form [TDD]
Django super Einführung von Python-Anfängern! Teil 3 Ich habe versucht, die Vererbungsfunktion für Vorlagendateien zu verwenden
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe versucht, das Ergebnis des A / B-Tests mit dem Chi-Quadrat-Test zu überprüfen
So überprüfen Sie die Version von Django
Der Weg, um die Verbindung zwischen Nginx, Django und Uwsgi zu bekämpfen und ein wenig zu gewinnen
So zählen Sie die Anzahl der Elemente in Django und geben sie in die Vorlage aus
Ich möchte gleichzeitig einen Musik-Player erstellen und Musik ablegen
Ich möchte ein Element mit numpy in eine Datei schreiben und es überprüfen.
Verwenden Sie den Befehl [shell], um eine beliebige Datei zu komprimieren, um eine Datei zu erstellen und die Originaldatei zu löschen.
Das erste, was überprüft werden muss, wenn in Django ein No Reverse Match auftritt
Ich habe versucht, den G-Test und die E-Qualifikation durch Training ab 50 zu bestehen
Speichern Sie das Objekt in einer Datei mit pickle
Legen Sie die von django hochgeladene Datei in MinIO ab
[Python] Sie können ein Objekt mithilfe des Pickle-Moduls in einer Datei speichern.
Erstellen Sie mit Google Text To Speak eine Audiodatei mit der Text-to-Speech-Funktion und überprüfen Sie den Text 3 Minuten lang als Leitfaden für das Sprechen.
Erstellt ein Modul zur Überwachung von Datei- und URL-Aktualisierungen
Lesen Sie die XML-Datei anhand des Python-Tutorials
So finden Sie heraus, welche Version von Java Maven verwendet wird
Übergang zum Update-Bildschirm mit dem Django-Tag
So veröffentlichen Sie ein Ticket über die Shogun-API
Geben Sie einen Binärspeicherauszug in Binärdatei und zurück in eine Binärdatei aus
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Python - Lesen Sie Daten aus einer numerischen Datendatei, um die verteilte, gemeinsam verteilte Matrix, Eigenwerte und Eigenvektoren zu finden
So erstellen Sie einen Datensatz, indem Sie eine Beziehung zum geerbten Modell in das von Django geerbte Modell einfügen
So senden Sie Dateien auf einmal, indem Sie mit SCP in mehreren Schritten eine Verbindung zu einem Host auf der anderen Seite der Plattform herstellen