2010-02-04 11 views
7

Je souhaite tester la partie is_valid de la logique de validation d'un formulaire. Dans mon pilote d'essai je:Comment tester la logique de validation d'un formulaire dans un pilote de test unitaire dans Django?

 
    test_animal = Animal(name="cat", number_paws="4") 
    test_animal_form = AnimalForm(instance=test_animal) 
    assertEqual(test_animal_form.is_valid(), True) 

L'assertion échoue, mais de ce que je vois qu'il ne devrait pas y avoir des erreurs dans la forme. Je ne vois aucune erreur de validation dans le formulaire. Cela devrait-il fonctionner comme un cas de test si l'instance de test_animal, lorsqu'elle est chargée dans le formulaire, devrait être validée?

Répondre

16

La raison pour laquelle vous voyez les erreurs de validation est que les données instance ne sont pas utilisées dans la validation, vous devez spécifier les données envoyées au formulaire.

test_animal = Animal(name="cat", number_paws="4") 
test_animal_form = AnimalForm(instance=test_animal) 
assertEqual(test_animal_form.is_valid(), False) # No data has been supplied yet. 
test_animal_form = AnimalForm({'name': "cat", 'number_paws': 4, }, instance=test_animal) 
assertEqual(test_animal_form.is_valid(), True) # Now that you have given it data, it can validate. 
+7

Il existe des raccourcis comme 'assertTrue',' assertFalse' –