遍历机器人框架中python关键字返回的列表

时间:2018-07-12 19:37:56

标签: python robotframework

我的(python)关键字库中有一个返回列表的函数,但是当我将其传递给机器人测试用例时,出现错误“变量@ {LIST}的值不是列表或类似列表的错误” 。这是我的代码

机器人代码:

Generate Data
    @{LIST}=    Create Data 

Do Thing For All Values In List
    :FOR    ${value}    IN  @{LIST} 
    \   Do The Thing     ${value}

Python代码:

def create_data():
    data = []
    for i in range(0, 10):
        data_val = do_a_bunch_of_selenium_automation(i)
        data.append(data_val)
    return data

如何正确执行此操作?谢谢大家。

2 个答案:

答案 0 :(得分:1)

在问题代码中,您正在正确地遍历列表。但是,您正在一个测试用例中创建数据,然后尝试在另一个测试用例中使用它。在第一个测试用例中,数据位于局部变量中。

如果要在测试用例之间共享数据,则需要将变量设置为测试套件变量,可以使用内置关键字Set suite variable

Generate Data
    @{LIST}=    create data
    set suite variable  @{LIST}

答案 1 :(得分:-1)

说实话,您的例子对我有用。做了一些补充,以得到一个可行的示例,但没什么大不了的:

ListCreationLibrary.py

class ListCreationLibrary(object):

    ROBOT_LIBRARY_VERSION = 1.0

    def __init__(self):
        pass

    def create_data(self):
        data = []
        for i in range(0, 10):
            data_val = self.do_a_bunch_of_selenium_automation(i)
            data.append(data_val)
        return data

    def do_a_bunch_of_selenium_automation(self, i):
        return  "some_string" + str(i)

test_script.robot

*** Settings ***
Library    ListCreationLibrary

*** Test Cases ***
TC
    ${list_example}    Create Data
    Do Thing For All Values In List    ${list_example}

*** Keywords ***
Do Thing For All Values In List
    [Arguments]    ${LIST}
    :FOR    ${value}    IN  @{LIST} 
    \   Do The Thing     ${value}

Do The Thing
    [Arguments]    ${value}
    Log    ${value}

将两个文件放在同一目录中,您应该可以。