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
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:
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 utilizandopytest.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!