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

Posted

技术标签:

【中文标题】从多个关键字调用构建机器人框架列表【英文标题】: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

感谢您的帮助。

【问题讨论】:

【参考方案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']

【讨论】:

以上是关于从多个关键字调用构建机器人框架列表的主要内容,如果未能解决你的问题,请参考以下文章

将 seleniumlibrary 前缀添加到关键字调用问题

机器人框架:无法使用 __eq__ 方法从类中获取关键字

在 Robot 框架中评估多个 If 条件

在关键字中运行关键字的机器人框架

scala 隐式详解(implicit关键字)

机器人框架:访问同一个库的多个资源文件