如何将数据驱动的概念应用于 Robot Framework 中的用户关键字?

Posted

技术标签:

【中文标题】如何将数据驱动的概念应用于 Robot Framework 中的用户关键字?【英文标题】:How to apply data-driven concept to user keywords in Robot Framework? 【发布时间】:2014-06-03 05:21:15 【问题描述】:

假设我为以下操作定义了用户关键字: 发送电子邮件 READ_EMAIL FLAG_EMAIL 我想在 Robot Framework 中随机执行 10 次这些操作。我怎样才能最好地做到这一点?

例如,当我运行这个测试几次时,Robot Framework 可以执行类似的操作 运行 1:SEND_EMAIL。 READ_EMAIL、READ_EMAIL、FLAG_EMAIL、READ_EMAIL、SEND_EMAIL、FLAG_EMAIL、SEND_EMAIL、FLAG_EMAIL、READ_EMAIL 运行 2:READ_EMAIL、FLAG_EMAIL、SEND_EMAIL、FLAG_EMAIL、SEND_EMAIL、FLAG_EMAIL、READ_EMAIL、SEND_EMAIL、FLAG_EMAIL、SEND_EMAIL

我希望 Robot Framework 有这样的东西,但我似乎没有找到任何方法来编写下面的“从 3 个可能的操作中选择 1 个”:

从 1 到 10 的 For 循环: 从 3 个可能的操作中选择 1 个(SEND_EMAIL、READ_EMAIL、FLAG_EMAIL)

【问题讨论】:

这如何适用于数据驱动的概念? 【参考方案1】:

这样试试:

*** Settings ***

Library  String

*** Test Cases ***

Perform Test Once
    Perform Test

Perform Test Twice
    Perform Test
    Perform Test


*** Keywords ***

SEND_EMAIL
    Log SEND_EMAIL  WARN

READ_EMAIL
    Log READ_EMAIL  WARN

FLAG_EMAIL
    Log FLAG_EMAIL  WARN

Call Random
#   Generate Random String With Length 1 From Numbers 1,2 and 3
    $random=  Generate Random String  1  123
#   Call Keyword Randomly Using If/Else If/Else
    Run Keyword If  $random == 1  SEND_EMAIL
    ... ELSE IF     $random == 2  READ_EMAIL
    ... ELSE        FLAG_EMAIL

Perform Test
#   Call Keyword "Call Random" 10 Times Using FOR loop
    :FOR  $number  IN RANGE  0  10
    \   Call Random

【讨论】:

【参考方案2】:

你可以使用Evaluate关键字让python返回一个范围内的随机数。然后,您可以使用该数字从关键字列表中选择一个关键字。这样,很容易编写一个从列表中随机选择一个关键字并运行该关键字的关键字

一旦你有了它,你可以使用循环来做你想要的多次。

例如:

*** Test Cases ***
| Run random email keywords ten times
| | :FOR | $counter | IN RANGE | 10
| | | Run one of these keywords randomly:
| | | ... | SEND_EMAIL | READ_EMAIL | FLAG_EMAIL


*** Keywords ***
| Run one of these keywords randomly:
| | [Arguments] | @args
| | [Documentation] | Run a random keyword from a list of keywords
| | 
| | # Get a random number to use to pick a keyword
| | $index= | Evaluate | random.randint(0, len($args)-1) | random
| | 
| | # Get a keyword using the random number
| | $keyword= | Get variable value | $args[$index]
| | 
| | # Run the keyword
| | Run keyword and continue on failure | $keyword

请注意,这将作为单个测试用例而不是 10 个测试用例出现在日志中。您可以选择让所有 10 个关键字都像示例中那样运行,也可以在第一个关键字失败时失败。

【讨论】:

以上是关于如何将数据驱动的概念应用于 Robot Framework 中的用户关键字?的主要内容,如果未能解决你的问题,请参考以下文章

使用robot frame selenium中遇到的问题汇总

在 Robot Framework 中,如何通过为文本文件中的每一行数据创建单独的测试用例来执行数据驱动测试?

Robot Framework - 将 Appium 驱动程序传递给 python 脚本

将函数应用于 data.frame 中的每一行并将结果附加到 R 中的 data.frame

robot frame 注释 怎么加

在 Robot Framework 中使用关键字驱动的方法执行测试用例时显示错误