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.

Probando la misma función con diferentes parámetros.

Estoy tratando de probar una función múltiples veces utilizando diferentes parámetros. El valor de retorno debe ser Verdadero.

def testConfiguration(small,medium,large):
    ...
    if (todo va bien):
        return True
    else:
        return False

testConfiguration(0,0,1)
testConfiguration(1,2,1)
testConfiguration(1,3,1)

¿Cuál es la mejor manera de hacer esto en pytest? Quiero evitar múltiples funciones actuando como envoltorios “assert True”, por ejemplo:

def test_ConfigA():
    assert testConfiguration(0,0,1) == True

def test_ConfigB():
    assert testConfiguration(1,2,1) == True

...
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una opción sería utilizar la característica de parametrización de pytest. Esto te permite pasar varios conjuntos de parámetros y ejecutar la misma función de prueba para cada conjunto.

    Aquí tienes un ejemplo de implementación:

    import pytest
    
    def testConfiguration(small,medium,large):
        ...
        assert (todo va bien) == True
    
    @pytest.mark.parametrize("small,medium,large", [
        (0,0,1),
        (1,2,1),
        (1,3,1),
    ])
    def test_configurations(small, medium, large):
        testConfiguration(small, medium, large)
    

    En este ejemplo, la función test_configurations está parametrizada con tres conjuntos de parámetros. Para cada conjunto de parámetros, se llama a la función testConfiguration con esos parámetros. La afirmación se realiza dentro de la función testConfiguration, lo que nos permite evitar múltiples envoltorios de assert True.

    Si alguna de las afirmaciones falla, pytest informará qué conjunto de parámetros causó el fallo.

Comments are closed.