A cause de CSRF, même si j'envoie un fichier par POST, une erreur est renvoyée! J'ai pensé, mais je savais que je devais tester le formulaire. ~~ Je voulais vraiment le tester pour voir le contexte de POST et revenir, mais je ne savais pas. Il y a peut-être un moyen, alors je l'ajouterai quand je comprendrai. ~~
Depuis qu'il a été résolu, il est résumé dans cet article.
Supposons que vous souhaitiez tester le formulaire ci-dessous.
forms.py
from django import forms
class FormTest(forms.Form):
table_name=forms.CharField(max_length=30)
file_data= forms.FileField()
Le test de téléchargement de fichier pour cela est écrit comme ci-dessous.
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())
Si vous lancez les bonnes données, ʻis_valid () `retournera True.
Comme je l'ai écrit au début, je n'ai pas pu POSTER le fichier correctement, probablement à cause de CSRF. Après cela, je l'ai changé comme ci-dessus, mais cela ne s'est pas passé facilement. En conclusion ** La validation personnalisée était mauvaise. ** ** Eh bien, cela fonctionnait bien plutôt que mal, mais les données que j'ai écrites dans le test ne correspondaient pas. Pour éviter d'être comme vous, assurez-vous d'afficher des erreurs de validation lors du test de votre formulaire.
tests.py
print(form.errors)
Vous pouvez maintenant voir le contenu de l'erreur de validation. Veuillez vérifier si l'erreur est comme prévu.
Recommended Posts