2010-02-04 8 views
7

Quiero probar la porción is_valid de la lógica de validación de un formulario. En mi piloto de pruebas que tengo:¿Cómo puedo probar la lógica de validación de un formulario en un controlador de prueba de unidad en Django?

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

La aserción falla, pero por lo que veo no debería haber ningún errores en el formulario. No veo ningún error de validación en el formulario. ¿Debería funcionar esto como un caso de prueba si la instancia test_animal cuando se carga en el formulario debe validar?

Respuesta

16

La razón por la que está viendo los errores de validación es porque los datos instance no se utilizan en la validación, debe especificar los datos que se envían al formulario.

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

Hay shorcuts como 'assertTrue',' assertFalse' –

Cuestiones relacionadas