Django-fr

Forum

  • Accueil
  • » Django-fr
  • » TDD : Form.is_valid() toujours valide même sans données.

#1 23-06-2015 17:44:30

Daedelus
Membre
Inscription : 23-06-2015
Messages : 1

TDD : Form.is_valid() toujours valide même sans données.

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 wink

Hors ligne

#2 24-06-2015 09:55:11

Xavier Ordoquy
Administrateur
Lieu : Puteaux, France
Inscription : 12-10-2011
Messages : 312
Site Web

Re : TDD : Form.is_valid() toujours valide même sans données.

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

  • Accueil
  • » Django-fr
  • » TDD : Form.is_valid() toujours valide même sans données.

Pied de page des forums