Tengo un montón de clases que tratan con la validación de valores. Por ejemplo, una clase RangeValidator
verifica si un valor está dentro del rango especificado.
Cada clase de validador contiene dos métodos: is_valid(value)
, que devuelve True
o False
según el valor, y ensure_valid(value)
que verifica un valor específico y no hace nada si el valor es válido, o arroja una excepción específica si el valor no coincide con las reglas predefinidas.
Actualmente hay dos pruebas unitarias asociadas con este método:
-
El que pasa un valor no válido y garantiza que se lanzó la excepción.
def test_outside_range(self): with self.assertRaises(demo.ValidationException): demo.RangeValidator(0, 100).ensure_valid(-5)
-
El que pasa un valor válido.
def test_in_range(self): demo.RangeValidator(0, 100).ensure_valid(25)
Aunque la segunda prueba hace su trabajo, falla si se lanza la excepción y tiene éxito si ensure_valid
no arroja nada: el hecho de que no haya assert
s por dentro parece extraño. Alguien que lea tal código se preguntará inmediatamente por qué hay una prueba que parece para no hacer nada.
¿Es esta una práctica actual cuando se prueban métodos que no devuelven un valor y no tienen efectos secundarios? ¿O debería reescribir la prueba de una manera diferente? ¿O simplemente poner un comentario explicando lo que estoy haciendo?