Pruebas del modelo 23-24

De Wiki de EGC
Saltar a: navegación, buscar

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")