Pregunta

Digamos que tengo 100 casos de prueba para ejecutar en los cuales los casos de prueba 24, 38 y 99 son interdependientes.Entonces, ¿es posible que mientras se ejecuta el caso de prueba número 99, usted descubra el estado de un caso de prueba ejecutado previamente (por ejemplo, el caso de prueba número 24 o 38)?En mi caso, el caso de prueba número 99 depende del estado de los casos de prueba 38 y 24 y, por lo tanto, si fallan el 24 o el 38, me gustaría que el caso de prueba 99 NO se ejecute en absoluto y, por lo tanto, me ahorre mucho. de tiempo.Por favor, explique con algún ejemplo si es posible.¡Gracias de antemano!

¿Fue útil?

Solución

Una vez que el robot comienza a funcionar, no hay forma de omitir una prueba debido a alguna condición.Creo que esta es una de las debilidades del robot, pero los diseñadores Realmente no parece gustarle la idea de omitir pruebas.Además, no existe una forma integrada de que una prueba dependa de otra.A La solicitud de función para esta misma función fue rechazada..

Sin embargo, el robot es muy extensible y una característica que se introdujo en la versión 2.8.5 facilita la escritura de una palabra clave que fallará si falla otra prueba. Esta característica es la capacidad de un biblioteca para actuar como oyente.Con esto, una biblioteca puede realizar un seguimiento del estado de aprobación/reprobación de cada prueba.Con ese conocimiento, puede crear una palabra clave que falle inmediatamente si falla alguna otra prueba.

La idea básica es almacenar en caché el estado de aprobación/rechazo cuando finaliza cada prueba (a través del enlace especial). _end_test método).Luego, utilice este valor para determinar si falla inmediatamente o no.

A continuación se muestra un ejemplo de cómo utilizar dicha palabra clave:

*** Settings ***
| Library | /path/to/DependencyLibrary.py

*** Test Cases ***
| Example of a failing test
| | fail | this test has failed

| Example of a dependent test
| | [Setup] | Require test case | Example of a failing test
| | log | hello, world

Aquí está la definición de biblioteca:

from robot.libraries.BuiltIn import BuiltIn

class DependencyLibrary(object):
    ROBOT_LISTENER_API_VERSION = 2
    ROBOT_LIBRARY_SCOPE = "GLOBAL"

    def __init__(self):
        self.ROBOT_LIBRARY_LISTENER = self
        self.test_status = {}

    def require_test_case(self, name):
        key = name.lower()
        if (key not in self.test_status):
            BuiltIn().fail("required test case can't be found: '%s'" % name)

        if (self.test_status[key] != "PASS"):
            BuiltIn().fail("required test case failed: '%s'" % name)

        return True

    def _end_test(self, name, attrs):
        self.test_status[name.lower()] = attrs["status"]

Otros consejos

Para resolver este problema, estoy usando algo como esto:

Run Keyword if  '${PREV TEST STATUS}'=='PASSED'  myKeyword

Entonces, tal vez esto se puede usar también para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top