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.

La ejecución de pruebas se detiene después de un error de aserción en pytest.

Para las pruebas basadas en datos, si hay 10 conjuntos de datos y la aserción falla en el tercer conjunto de datos, entonces los otros 7 conjuntos de datos no se consideran para la ejecución y el programa se detiene por completo en ese punto. He intentado eliminar la línea “raise e” y en ese momento se consideran todos los conjuntos de datos para la ejecución, pero al final, el estado se muestra como PASSED, lo cual no es correcto ya que necesito informar la falla en el tercer conjunto de datos. Por favor, háganme saber si tienen alguna solución para lo mismo.

He intentado los siguientes 2 métodos y no funcionaron. Para el primero, el caso de prueba se ejecutó 10 veces para los 10 conjuntos de datos, pero incluso después de una falla en el tercer conjunto de datos, el estado de ejecución de la prueba se muestra como PASSED, lo cual no es correcto ya que el caso de prueba debería fallar en el informe.

Para el segundo, la ejecución de la prueba se detiene por completo después de una falla de aserción en el tercer conjunto de datos y los conjuntos de datos restantes no se consideran para la ejecución.

Mi objetivo es ejecutar el caso de prueba para todos los conjuntos de datos de una vez y luego verificar el informe de cualquier falla.

        try:
            assert len(json_response_plan) == 1
        except Exception:
            pytest.raises(Exception)


        try:
            assert len(json_response_plan) == 1
        except Exception as e:
            raise e
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en Python y pruebas automatizadas con Pytest, recomendaría utilizar el método pytest.fail para marcar explícitamente una prueba como fallida sin generar una excepción. De esta manera, la ejecución de la prueba continuará para todos los conjuntos de datos y el informe reflejará correctamente las fallas.

    Aquí hay un ejemplo:

    import pytest
    
    def test_data_sets():
        data_sets = [...] # defina sus conjuntos de datos de prueba
        for data in data_sets:
            try:
                assert len(data) == 1
            except AssertionError:
                pytest.fail('La prueba falló para el conjunto de datos: {}'.format(data))
    

    En este ejemplo, la función test_data_sets itera sobre todos los conjuntos de datos de prueba y verifica que la longitud de cada conjunto de datos sea igual a 1. Si la verificación falla, la prueba se marca como fallida utilizando pytest.fail, lo que hará que el informe de prueba refleje correctamente las fallas sin detener la ejecución de la prueba.

    ¡Espero que esto ayude!

Comments are closed.