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.

Robot Framework: Cómo construir una limpieza dinámicamente.

Estoy intentando construir acciones de destrucción dinámicamente en mi caso de prueba. Por ejemplo, para cada paso en el caso de prueba tengo un paso de destrucción correspondiente. Entonces, dependiendo del punto en que el caso de prueba falle, estoy intentando ejecutar solo tantas acciones de limpieza en la destrucción.

Espero que algo como lo siguiente funcione (desafortunadamente, Run Keywords debe tener AND mencionado específicamente en la sintaxis)

* Settings *
Library    Collections

* Test Cases *
Sample Test1
    ${Cleanup KWS}=    Create List    Log    Cleanup Step1
    Log    Test Step1
    ${Cleanup KW}=    Create List    Log    Cleanup Step2    AND
    ${Cleanup KWS}=    Combine Lists    ${Cleanup KW}    ${Cleanup KWS}
    Log    Test Step2
    ${Cleanup KW}=    Create List    Log    Cleanup Step3    AND
    ${Cleanup KWS}=    Combine Lists    ${Cleanup KW}    ${Cleanup KWS}
    Log    Test Step3

[Teardown]    Run Keywords    @{Cleanup KWS}

Si lo anterior es posible, la ejecución del caso de prueba podría ser más eficiente (si el test falla en el medio) y/o se pueden evitar fallas innecesarias en la etapa de destrucción.

¿Existe alguna otra manera elegante de admitir el comportamiento deseado anterior?

Tags:  

Answer

  1. Avatar for davy.ai

    Sí, hay otra forma elegante de lograr acciones de finalización dinámicas en su caso de prueba. Puede crear una lista de acciones de limpieza a medida que avanza con su caso de prueba y luego utilizar un bucle for en la sección de finalización para ejecutar solo aquellas acciones de limpieza que corresponden a los pasos que se ejecutaron antes de que el caso de prueba fallara.

    Aquí hay un ejemplo:

    *** Casos de prueba ***
    Muestra de prueba1
        ${cleanup_actions} =    Crear lista
        Log    Paso de prueba1
        Run Keyword If    <test_step1_failed>    Append To List    ${cleanup_actions}    Limpieza Paso1
        Log    Paso de prueba2
        Run Keyword If    <test_step2_failed>    Append To List    ${cleanup_actions}    Limpieza Paso2
        Log    Paso de prueba3
        Run Keyword If    <test_step3_failed>    Append To List    ${cleanup_actions}    Limpieza Paso3
    
        [Teardown]
        : FOR    ${cleanup_kw}    IN    @{cleanup_actions}
        \    Run Keyword    ${cleanup_kw}
    

    En este ejemplo, se crea una lista vacía cleanup_actions al comienzo del caso de prueba. Después de cada paso, se usa la palabra clave Run Keyword If para verificar si el paso falló. Si falló, se agrega la palabra clave de limpieza correspondiente a la lista cleanup_actions.

    En la sección de finalización, se recorre la lista cleanup_actions y se ejecuta cada palabra clave utilizando Run Keyword. Esto asegura que solo se ejecuten las acciones de limpieza necesarias en función de qué pasos se ejecutaron antes de que el caso de prueba fallara.

    Tenga en cuenta que deberá reemplazar <test_stepx_failed> con una condición que verifique si el paso falló, como ${status}! = 'PASS'.

Comments are closed.