[PYTHON] [Django] Ich wollte testen, wenn ich eine große Datei poste [TDD]

Ich wollte testen, ob eine große Datei (diesmal etwa 200 MB) beim POST durch Validierung korrekt abgestoßen wurde. Ich wollte, aber als ich tatsächlich versuchte, mit einer Datei von ungefähr 200 MB zu testen, wurde ich wütend auf "Memory Error".

Sie können so etwas wie Dummy-Daten machen!

Als ich mich fragte, was passiert ist, scheint es eine temporäre hochgeladene Datei zu geben.

test.py


from django.core.files.uploadedfile import TemporaryUploadedFile
from django.test import TestCase

#Unterlassung
class TestClass(TestCase):
  def test_testfunction(self):
    form_data = {
      'upload_file': TemporaryUploadedFile("test.csv", "csv", 214958080, "utf8")
    }
    response = self.client.post('/test/path/', form_data)
    self.assertEqual(302, response.status_code, "Ich habe nicht richtig umgeleitet")

Es ist viel kaputt, aber es sieht so aus, als ob es so verwendet werden kann. Die Kapazität kann mit dem dritten Argument in b-Einheiten angegeben werden. Dieses Mal habe ich einen Wert angegeben, der etwas über 200 MB liegt. (Die Ziffer ändert sich bei 1024. Beachten Sie, dass es nicht 1000 ist.)

Zusammenfassung

Es ist sehr kurz, aber ich frage mich, ob es in einem denkwürdigen Sinne gut ist. Übrigens scheint es auch "InMemoryUploadedFile" für eine kleine Datenmenge zu geben.

Referenz

https://docs.djangoproject.com/ja/3.0/_modules/django/core/files/uploadedfile/

Recommended Posts

[Django] Ich wollte testen, wenn ich eine große Datei poste [TDD]
Django-Test
[Django] So testen Sie Form [TDD]
Testen Sie die Standardausgabe mit Pytest
[Django] Ich wollte testen, wenn ich eine große Datei poste [TDD]
Testgetriebene Entwicklung mit Django Teil 4
Testgetriebene Entwicklung mit Django Teil 6
Testgetriebene Entwicklung mit Django Teil 2
[Test Driven Development (TDD)] Kapitel 21 Zusammenfassung
Testgetriebene Entwicklung mit Django Teil 1
Testgetriebene Entwicklung mit Django Teil 5
[Django] Test zum Senden einer Datei per POST und Überprüfen des zurückgegebenen Kontexts [TDD]
[Django] So testen Sie Form [TDD]
Ich möchte keinen Codierungstest machen
Ich möchte mit Python in eine Datei schreiben
Ich möchte eine Django-App auf Heroku hochladen
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Was tun, wenn gdal_merge eine große Datei generiert?
Ich möchte eine Datei mit Python zufällig testen
Eine Geschichte über den Wunsch, die Django-Administrationsseite ein wenig zu ändern
Eine Geschichte, die ich machen wollte, als ich eine Liste von Lernsitzungen mit Python bekam
[Django] Memorandum, wenn Sie asynchron kommunizieren möchten [Python3]
Ich wollte bestimmte Erweiterungen beim Erstellen der Sphinx-Dokumentation überspringen
Ich habe einen Befehl zum Generieren eines Kommentars für eine Tabelle in Django eingegeben
Ich bin gestolpert, als ich versucht habe, Basemap zu installieren, also ein Memorandum
[Django] Test funktioniert nicht, wenn ich den Speicherort der Datei ändere
Laden Sie eine Datei in Dropbox hoch
Ich habe versucht, eine Python-Datei in eine EXE-Datei zu verwandeln (Rekursionsfehler unterstützt)
Ich wollte es so machen, als würde ich einen Testfall für AtCoder ausführen.
Ein Memorandum beim automatischen Erwerb mit Selen
Python> Ich habe einen Testcode für meine eigene externe Datei erstellt
Ich wollte eine intelligente Präsentation mit Jupyter Notebook + nb present erstellen
Ich wollte mein Gesichtsfoto in einen Yuyu-Stil umwandeln.
Ein Hinweis, von dem ich süchtig war, als ich unter Linux einen Piepton machte
Ich wollte das ABC164 A ~ D-Problem mit Python lösen
Wie erstelle ich eine große Menge an Testdaten in MySQL? ??
Was ich getan habe, als ich Python schneller machen wollte - Numba Edition -
[Python] Als ich versuchte, ein Dekomprimierungswerkzeug mit einer Zip-Datei zu erstellen, die ich gerade kannte, war ich süchtig nach sys.exit ()
Django super Einführung von Python-Anfängern! Teil 3 Ich habe versucht, die Vererbungsfunktion für Vorlagendateien zu verwenden
Ich möchte das Problem des Speicherverlusts bei der Ausgabe einer großen Anzahl von Bildern mit Matplotlib lösen
Schritte zum Erstellen eines Django-Projekts
Hash-Kette wollte ich vermeiden (2)
Schreiben Sie die Standardausgabe in eine Datei
Ich wollte cGAN zu ACGAN weiterentwickeln
Hash-Kette wollte ich vermeiden (1)
So erstellen Sie eine Konfigurationsdatei
Erstellen Sie mit Django einen Datei-Uploader
Ich wollte einen Satz wie "Fucking Rashomon" (vergangene Form) generieren
Ich erhalte einen UnicodeDecodeError, wenn ich versuche, mit Python sqlalchemy eine Verbindung zu Oracle herzustellen
Ich habe ein Programm erstellt, um Sie per LINE zu benachrichtigen, wenn Schalter eintreffen
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
Wenn ich mit Chainer zurückkehre, passt es ein wenig
Wenn Sie einen Test mit DB mit django schreiben, ist es möglicherweise schneller, `setUpTestData ()` zu verwenden