Vous n'êtes pas identifié(e).
Bonjours,
Je réalise à ce jours une application web en TDD, je commence à peine à utiliser Django et je me heurte à un problème. En effet, quand je fait un test unitaire de mon formulaire il me renvoie True même sans données, je pense qu'il test l'intégrité du formulaire sans les données, enfin je un exemple vaut mieux qu'une longue explication.
Le formulaire :
class YoloAddForm(forms.Form):
class Meta:
model = Yolo
fields = (
'name',
'date',
)
frite = forms.ModelChoiceField(queryset=Frite.objects.all())
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
for key in self.fields:
self.fields[key].required = True
Les tests unitaires :
def test_valid_yolo_form(self):
data = {
'name': self.yolo.name,
'date': self.yolo.date,
'frite': self.frite,
}
form = YoloAddForm(data=data)
self.assertTrue(form.is_valid(), msg=form.errors.items())
# Ici les données sont invalides mais le test envoie True !!
def test_invalid_yolo_form(self):
data = {
# 'name': self.yolo.name,
}
form = YoloAddForm(data=data)
self.assertFalse(form.is_valid(), msg=form.errors.items()) <-- La ligne 94
La console :
Traceback (most recent call last):
File "/Library/WebServer/Documents/evend-site/apps/core/tests/test_yolo.py", line 94, in test_invalid_yolo_form
self.assertFalse(form.is_valid(), msg=form.errors.items())
AssertionError: True is not false : dict_items([])
Merci d'avance
Hors ligne
Ton formulaire n'est pas un ModelForm, il ne va donc pas extraire les champs du model. Tu as un formulaire sans champs qui est du coup valide quand on lui passe des données vides.
Hors ligne