Aufgrund von CSRF wird ein Fehler zurückgegeben, selbst wenn ich eine Datei per POST sende! Ich dachte, aber ich wusste, ich sollte das Formular testen. ~~ Ich wollte es unbedingt testen, um den Kontext von POST zu sehen und zurück zu kommen, aber ich wusste es nicht. Es kann einen Weg geben, also werde ich ihn hinzufügen, wenn ich ihn verstehe. ~~
Da es behoben wurde, ist es in [diesem Artikel] zusammengefasst (https://qiita.com/NomuK3/items/7cac7083bc270b141f05).
Angenommen, Sie möchten das folgende Formular testen.
forms.py
from django import forms
class FormTest(forms.Form):
table_name=forms.CharField(max_length=30)
file_data= forms.FileField()
Der Datei-Upload-Test hierfür ist wie folgt geschrieben.
tests.py
from django.core.files import File
from ..forms import DocumentForm
class Test_Model_Create(TestCase):
def setUp(self):
self.file_data=File(open('./path/test.csv'))
def test_step1_form(self):
data = {
"table_name":"name_test"
}
files={
"file_data":self.file_data
}
form = DocumentForm(data,files)
self.assertTrue(form.is_valid())
Wenn Sie die richtigen Daten ausgeben, gibt is_valid ()
True zurück.
Wie ich am Anfang schrieb, konnte ich die Datei nicht richtig POSTEN, wahrscheinlich wegen CSRF. Danach habe ich es wie oben geändert, aber es ging nicht leicht durch. Fazit ** Die benutzerdefinierte Validierung war schlecht. ** ** ** Nun, es hat eher gut als schlecht funktioniert, aber die Daten, die ich im Test geschrieben habe, stimmten nicht überein. Um nicht wie Sie selbst zu sein, stellen Sie bitte sicher, dass Sie beim Testen Ihres Formulars Validierungsfehler anzeigen.
tests.py
print(form.errors)
Jetzt können Sie den Inhalt des Validierungsfehlers sehen. Bitte überprüfen Sie, ob der Fehler wie erwartet ist.
Recommended Posts