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.

En Robot Framework, ¿puedes crear un objeto de recurso similar a las bibliotecas?

En el framework de robot, se puede crear un objeto a partir de una biblioteca. Directamente desde la documentación, se ve así.

*** Settings ***
Library    com.company.TestLib    WITH NAME    TestLib

Mi pregunta es si se puede hacer lo mismo con un archivo de recurso. He estado intentando crear un archivo de palabras clave en Python con variables de instancia que almacenen la hora de inicio de la prueba y el nombre de la prueba. Utilizo el nombre de la prueba y la hora como una ID única en un archivo de datos de JavaScript para la web. Vi que ambos valores volvían al valor predeterminado ‘blank’ y decidí insertar algunas instrucciones de impresión sobre una variable de instancia de ID. Este fue el resultado.

var testRuns = {};
testRuns['Test Site 2 2021-12-09 02:09:19.849706']=[];
testRuns['blank'].push({Case: 'Just Proving the Point.txt', Step: 'Verify Menu HTML', Time: '18970 days, 7:09:19.889702', Status: 'PASS', Details: 'Actual: Content, Expected: Content'});***ID0
testRuns['blank'].push({Case: 'Find Content Menu.txt', Step: 'Verify Menu HTML', Time: '18970 days, 7:09:19.919697', Status: 'PASS', Details: 'Actual: Content, Expected: Content'});***ID34

La ID generada aleatoriamente se crea al construir la clase de Python (abajo). Cada línea en la salida tiene la ID adjunta y se puede ver que son diferentes. Cada uno parece ser una instancia completamente nueva de la clase de Python creada en el archivo de recurso.

class kw_DataExtraction:
    def __init__(self, primaryFile=defaultFile, secondaryFile=defaultSecondaryFile):
        self.dataFile = primaryFile
        self.otherFile = secondaryFile
        self.currentTestName = "blank"
        self.testCaseStart = datetime.fromtimestamp(0)
        self.myID = random.randint(0,100)

Entonces, intenté algo como lo siguiente y aparentemente no es una sintaxis válida. ¿Hay alguna forma de instanciar los recursos solo una vez y usarlos consistentemente?

Resource   ./../OQE/DataExtraction.resource    WITH NAME    dEx
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible crear una instancia de un archivo de recursos en Robot Framework utilizando la sintaxis que proporcionaste. Aquí tienes un ejemplo:

    *** Settings ***
    Resource   ./../OQE/DataExtraction.resource    WITH NAME    dEx
    
    *** Test Cases ***
    Example Test
        ${dEx_instance}=    Evaluate    dEx.__class__(dEx.currentTestName, dEx.testCaseStart)
        Log    ${dEx_instance.currentTestName}    # esto debería imprimir "blank"
    

    En este ejemplo, estamos creando una instancia de la clase DataExtraction definida en el archivo DataExtraction.resource utilizando el método __class__() de Python con los valores actuales de currentTestName y testCaseStart. La instancia se guarda en la variable ${dEx_instance}, que se puede utilizar para acceder a las propiedades y métodos de la instancia DataExtraction a lo largo del caso de prueba.

    Ten en cuenta que la cláusula WITH NAME en la configuración de Resource es importante para crear una instancia nombrada del archivo de recursos. Sin ella, Robot Framework creará una instancia anónima del archivo de recursos, que puede no ser reutilizable en diferentes casos de prueba o suites.

Comments are closed.