在 Robot framework 数据驱动方法中生成测试用例

Posted

技术标签:

【中文标题】在 Robot framework 数据驱动方法中生成测试用例【英文标题】:Generating test cases in Robot framework data-driven approach 【发布时间】:2019-04-03 07:28:22 【问题描述】:

我有一个问题,关于如何避免在使用测试模板时将测试数据硬编码到 Robot 框架测试用例中。

我有测试用例,例如:

Test template     Invalid Login
*** Test Cases ***    LOGIN             PASSWORD
Login admin           admin             $INVALID_PWD
Login student         student           $INVALID_PWD
Login learner         learner           $INVALID_PWD
Login staff           staff             $INVALID_PWD

等等……

只要我没有 100 个左右的登录名和密码,我就喜欢这种方法。然后我需要在这里对其进行硬编码,这对我来说似乎有点太多了。

我尝试过的另一个方法是:

*** Test Cases ***
Mahara Invalid Login
[Template]    Invalid $login with $password
admin      aa
student    aa

这使它更简单一些,但我也不喜欢它,因为它只是一个包含多个不同步骤的测试用例,每个步骤使用不同的测试数据。

我想要的是,比如说,登录名和密码列表,或者 Python 中的字典,并让 Robot 框架使用这些来生成这样的测试用例。但是,我不知道这是否可能。

我进行了一些搜索,除其他外,发现了以下帖子:https://***.com/a/25206407/10401931,看起来不太乐观。

然后,我找到了几种读取 .csv 的方法。我可以在 Python 中实现这一点,但它没有回答我的问题,即如何将我在 .csv 中读取的内容加载到 Python 中的这种数据驱动方法中。基本上,我认为归结为如何强制测试模板遍历给定的给定列表/字典。由于测试模板基本上是一个 for 循环,因此可能有一种方法可以稍微改变这个循环。还是没有?

另一种方法是将整个 .robot 测试套件生成为 Python 中的文件。再说一次,我知道怎么做,但似乎过度设计了很多,我想找到一种更简单的方法。

我希望能稍微推动一下正确的方向。

谢谢

【问题讨论】:

"登录名和密码列表,或 Python 中的 dict 并让 Robot 框架使用这些来生成此类测试用例。但是,我不知道是否可能。 " 这是可能的,但是在我们不知道您的要求后,您必须根据需要进行修改,可能一个测试用例就可以完成您的工作 我明白了,所以我可以从 .csv 或其他文件加载测试数据,然后让 Robot 在一个测试用例中循环遍历它。绝对是一种选择,而且可能还不错,因为将许多测试数据编码到单独的测试用例中对我来说似乎是一个更糟糕的选择。另一方面,如果我不想要硬编码和单独的测试用例,你会怎么做? 【参考方案1】:

为了让这里完整,我会回答我的问题。

以下测试用例完成了我想要的工作:

*** Test Cases ***
Mahara Invalid Login
[Template]    Invalid $login with $password
:FOR    $login    IN    @invalid_logins.keys()
\    $login    $invalid_logins['$login']

在这种情况下,我从 Python 字典中加载测试数据,其中键是登录名,值是密码。

或者我可以使用 .csv 文件并执行以下操作:

Mahara Invalid Login      
$all_rows=    Get All Rows    $invalid_login_file    $DELIMITER    $HEADER
:FOR    $row    IN    @all_rows 
\    $login=    Set Variable    $row[0]
\    $password=    Set Variable    $row[1]
\    Invalid $login with $password

Get All Rows 是我用来从 .csv 文件加载数据的自定义关键字。

在这两个例子中,我不需要写太多,只需准备测试数据并在 Python 中编写一个 for 循环。

【讨论】:

以上是关于在 Robot framework 数据驱动方法中生成测试用例的主要内容,如果未能解决你的问题,请参考以下文章

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

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

Robot Framework之扩展打开不同版本的谷歌浏览器

学习使用Robot Framework自动化测试框架——简单介绍与安装方法

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

Robot Framework使用Phantomjs进行无界面UI自动化测试