【问题标题】:Iterate through list returned by python keyword in robot framework遍历机器人框架中python关键字返回的列表
【发布时间】:2018-12-21 03:14:04
【问题描述】:

我的 (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

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

【问题讨论】:

  • 你有一个函数叫Create Data?或者像CreateData()Create_Data() 之类的?
  • 可以编辑你的问题并添加Python函数Create Data?
  • @Yunnosch,是的。在我的例子中,函数名 create_data()。我确定它正在运行,因为(在我的具体情况下),它不仅仅生成一个列表,还做了更多的事情
  • @Yunnosch:不,不应该是create_data()。此代码是正确的语法。
  • @BryanOakley 我可能在这里迷路了。正在寻找明确标记为不是的东西中的python语法。谢谢你的好意。 (其实我才发现标签比较年轻……但迷路还是我的错)

标签: python robotframework


【解决方案1】:

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

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

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

【讨论】:

  • 只是想让你知道这行得通。谢谢!
【解决方案2】:

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

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}

把这两个文件放在同一个目录下应该就OK了。

【讨论】:

    猜你喜欢
    • 2013-11-08
    • 2016-01-03
    • 2014-03-07
    • 2017-05-02
    • 2017-08-09
    • 2018-07-03
    • 2020-11-06
    • 2015-10-14
    • 2019-06-11
    相关资源
    最近更新 更多