首页 > 解决方案 > 从侦听器为特定套件对象设置套件变量

问题描述

我正在运行中创建动态测试套件,如下所示。它工作正常。但我不知道如何为动态创建的套件对象设置套件变量。BuiltIn().set_suite_variable("${FOO}", "Bar")似乎也不适用于当前套件。我不需要为当前套件设置变量,而是为特定的子套件对象设置变量。请帮忙。

from robot.libraries.BuiltIn import BuiltIn

class DynamicTestLibrary(object):
    ROBOT_LISTENER_API_VERSION = 3
    ROBOT_LIBRARY_SCOPE = 'GLOBAL'
    ROBOT_LIBRARY_VERSION = 0.1

def __init__(self):
    self.ROBOT_LIBRARY_LISTENER = self
    self.top_suite = None

def _start_suite(self, suite, result):
    self.top_suite = suite
    self.children = list(suite.suites)

def add_test_cases(self, *versions):
    suitesAll = []
    for version in versions:
        for suite2 in self.children:
            suiteCopy = suite2.copy()
            print(version)
            print(suiteCopy.name)
            suiteCopy.name = suiteCopy.name + version
            BuiltIn().set_suite_variable("${FOO}", "Bar") #should be set for suiteCopy
            suitesAll.append(suiteCopy)
    self.top_suite.suites = suitesAll

 globals()[__name__] = DynamicTestLibrary

标签: pythonrobotframework

解决方案


我找到了解决方案。

suiteCopy.keywords.create('Set Suite Variable', args=['${RAFOO}', 'activated','children=true'], type='setup')

对于版本 > 4.0

suiteCopy.setup.config(name='Set Suite Variable', args=('${RAFOO}', 'activated','children=true'))

推荐阅读