es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Prueba unitaria en Python con condición Si-Sino

Suponga que tenemos la siguiente función:

import unittest
def func_test():
    indicador = True
    if(indicador == True):
        a = 5
        b = 10
        total = a+b
        return total
    else:
        a = 6
        b = 10
        total = a*b
        return total


class TestJob(unittest.TestCase)

    total = func_test(indicador = True)
    def test_func_test(self):
        self.assertGreater(total, 0)

¿Cómo probaríamos la condición else para la prueba unitaria?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para probar la condición else en la prueba unitaria, tendríamos que modificar la función func_test para recibir el valor de indicador como parámetro en lugar de usar el valor codificado en la implementación actual. Esto nos permitiría pasar un valor de False para indicador al llamar la función y probar la condición else.

    Aquí hay un ejemplo de código modificado:

    import unittest
    
    def func_test(indicador):
        if(indicador == True):
            a = 5
            b = 10
            total = a+b
            return total
        else:
            a = 6
            b = 10
            total = a*b
            return total
    
    
    class TestJob(unittest.TestCase):
    
        def test_func_test(self):
            total_1 = func_test(indicador = True)
            self.assertGreater(total_1, 0)
    
            total_2 = func_test(indicador = False)
            self.assertGreater(total_2, 0)
    

    En el código modificado, hemos agregado el parámetro indicador a la función func_test, y estamos pasando valores de True y False para probar ambas condiciones. En la clase TestJob, hemos agregado una nueva prueba test_func_test que prueba ambas condiciones usando la afirmación assertGreater para verificar que ambos valores total sean mayores que 0.

Comments are closed.