【问题标题】:Build a Robot Framework list from several keyword calls从多个关键字调用构建机器人框架列表
【发布时间】:2022-01-06 05:52:39
【问题描述】:

我有几个返回基本字符串的 Robot Framework 关键字。

@keyword
def keyword_one():
    return 'one'

@keyword
def keyword_two():
    return 'two'

在机器人测试用例中,我尝试使用这些项目构建一个列表,但我无法弄清楚如何做到这一点。

*** Test Cases ***

Test Case List
    @{my_list}=   Create List   Keyword One    Keywork Two

我尝试了几种语法,但无法正常工作。 当然,像下面这样的工作(硬编码值)。

*** Test Cases ***

Test Case List
    @{my_list}=   Create List   one    two

感谢您的帮助。

【问题讨论】:

    标签: robotframework


    【解决方案1】:

    在我写这篇文章的时候,机器人没有内联调用关键字的能力,所以你想要的不是直接可能的。

    不过,您可以编写自己的关键字来执行此操作。关键字可以接受多个关键字作为参数,并使用内置库中的run keyword 来运行关键字。

    例如,以下关键字定义创建了一个关键字,该关键字从多个关键字创建结果列表:

    用python编写的关键字

    如果您想尝试一下,请将文件命名为 example.py

    from robot.libraries.BuiltIn import BuiltIn
    
    builtin = BuiltIn()
    
    def create_list_from_keywords(*keywords):
        result = []
        for keyword in keywords:
            result.append(builtin.run_keyword(keyword))
        return result
    

    示例测试

    *** Settings ***
    Library  example.py
    
    *** Keywords ***
    Keyword one
        return from keyword  one
    
    Keyword two
        return from keyword  two
    
    *** Test cases ***
    Example
        @{actual}=    create list from keywords  Keyword one  Keyword two
        @{expected}=  create list                one          two
    
        Should be equal  ${actual}  ${expected}
    

    基于机器人的关键字定义

    如果您对 python 不满意,这里有一个基于机器人的关键字定义:

    Create list from keywords
        [Arguments]  @{keywords}
        [Return]     @{result}
    
        @{result}=   create list
        FOR  ${keyword}  IN  @{keywords}
            ${keyword result}=  Run keyword  ${keyword}
            Append to list  ${result}  ${keyword result}
        END
    

    【讨论】:

    • 感谢您提供完整的答案,这正是我想要的!
    【解决方案2】:

    此时您正在将关键字添加到列表中,而不是运行这些关键字返回的值

    您需要调用关键字来获取返回值并将它们添加到列表中,例如

    *** Test Cases ***
    Test Case List
        ${keyword_one_val}  Keyword One
        ${keyword_two_val}  Keyword Two
        
        @{my_list}=   Create List   ${keyword_one_val}    ${keyword_two_val}
        log to console  ${my_list}
    

    哪个输出:

    ['one', 'two']
    

    【讨论】:

      猜你喜欢
      • 2013-11-08
      • 2016-01-03
      • 1970-01-01
      • 2015-10-14
      • 2019-06-11
      • 2017-12-19
      • 2021-12-03
      • 2021-08-15
      • 2015-11-07
      相关资源
      最近更新 更多