从几个关键字调用构建机器人框架列表

Build a Robot Framework list from several keyword calls

我有几个 return 基本字符串的机器人框架关键字。

@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

感谢您的帮助。

目前您正在将关键字添加到列表中,而不是从 运行 这些关键字

返回的值

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

*** 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']

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

不过,您可以编写自己的关键字来执行此操作。关键字可以接受多个关键字作为参数,使用内置库中的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