Pruebas del modelo 23-24
EJERCICIO 4: TEST DE MODELO SIN PERSISTENCIA
Gracias al análisis de cobertura, podemos comprobar que en voting/models.py hay 4 líneas que nunca son ejecutadas por ninguno de los tests legacy que tenemos. Tres de estas líneas, se corresponden con métodos __str__. Para poder mejorar la cobertura, vamos a añadir un test con este propósito en voting/test.py.
def test_to_string(self):
#Crea un objeto votacion
v = self.create_voting()
#Verifica que el nombre de la votacion es test voting
self.assertEquals(str(v),"test voting")
#Verifica que la descripcion de la pregunta sea test question
self.assertEquals(str(v.question),"test question")
#Verifica que la primera opcion es option1 (2)
self.assertEquals(str(v.question.options.all()[0]),"option 1 (2)")
Si volvemos a lanzar el análisis de cobertura, podremos comprobar cómo ahora ha aumentado ligeramente en este módulo.
EJERCICIO 5: TEST DE MODELO CON PERSISTENCIA
Como puede observarse, en este nuevo caso de prueba, no verificamos ninguna acción CRUD, que también han quedado sin cubrir. Vamos ahora a añadir un nuevo test que sí lo haga: crearemos una votación sencilla con una pregunta y dos opciones de respuesta. Tras esto, comprobaremos que se haya almacenado correctamente en la base de datos.
Para ello, crearemos una nueva clase dentro de voting/tests.py:
class VotingModelTestCase(BaseTestCase):
def setUp(self):
q = Question(desc='Descripcion')
q.save()
opt1 = QuestionOption(question=q, option='opcion 1')
opt1.save()
opt1 = QuestionOption(question=q, option='opcion 2')
opt1.save()
self.v = Voting(name='Votacion', question=q)
self.v.save()
super().setUp()
def tearDown(self):
super().tearDown()
self.v = None
def testExist(self):
v=Voting.objects.get(name='Votacion')
self.assertEquals(v.question.options.all()[0].option, "opcion 1")