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

时间:2018-10-30 09:33:14

标签: python testing robotframework

我有一个问题,在使用测试模板时如何避免将测试数据硬编码到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://stackoverflow.com/a/25206407/10401931,看起来并不乐观。

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

另一种方法可能是将整个.robot测试套件生成为Python文件。同样,我知道如何做到这一点,但是似乎对它进行了过多的设计,我想找到一种更简单的方法。

我希望能在正确的方向上稍加推动。

谢谢

1 个答案:

答案 0 :(得分:0)

只需在这里完成此操作,我会回答我的问题。

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

/etc/apache2/sites-available/000-default.conf

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

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

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

获取所有行是我用来从.csv文件加载数据的自定义关键字。

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