对于已部署的应用程序,如何根据多个关键字从多个列表变量中选择列表变量?

时间:2014-08-06 18:11:37

标签: robotframework

我正在试图弄清楚如何从多个列表变量中选择列表变量。在我正在关注的Web应用程序中,用户帐户具有“帐户类型”和几个“权限”相关联。所以我有一个BBD风格的测试用例:

Scenario:Manager without permission should not access
    Given I have a manager account
    And I can edit things
    And I cannot update things
    When ...

在这种情况下,有3个前置条件,我想根据它们选择一个用户帐户。如果我有这些:

@{user1}    john    accountant    edit_permission    update_permission
@{user2}    mary    manager    create_permission    edit_permission
@{user3}    clark    manager    create_permission    edit_permission

然后选择@ {user3},因为它是唯一满足所有条件的人。不借助可变文件这样做是否可行或可取?原因是我想让测试用例尽可能重用,所以我不想将测试用例绑定到代表特定用户的特定变量。

编辑:我正在使用RF与Selenium2Library来测试已部署的Web应用程序,并且Web应用程序中可用的用户可能会随着时间的推移而发生变化。因此我认为,根据一组关键字动态选择用户可能更容易维护,因为那时我可以更改RF中的用户以匹配Web应用程序中的用户,而不是更改多个测试用例或关键字。另一种方法可以是从一组关键字中选择用户,如果可能的话。如果给出了一组表征用户的关键字(例如在前面的示例中),那么我可以根据关键字给出一个关键字。

1 个答案:

答案 0 :(得分:1)

鉴于您正在测试一个实时应用程序并且没有专门为测试创建帐户的奢侈,我会说这种方法是可行的。事实上,如果您的目标是编写零维护测试,我不确定您还有其他选择。

我要做的是从你的"当我..."的概念开始。关键字只是从可用帐户列表中提取帐户。根据您的需要,这可以是测试级列表或套件级列表。换句话说,它没有关于选择正确帐户的逻辑,它只会使用预先建立的列表中的一个 - 要么总是选择第一个,要么总是选择一个随机的。

所以,这是第一步。验证关键字取决于他们可以从中挑选的帐户列表,而不知道该列表中的实际内容。

接下来,让您的其他关键字充当该列表中的过滤器。也许列表以所有可能的帐户开始,或者您知道要用于测试的所有帐户的某个子集。当您拨打"鉴于我有一个经理帐户",它会从列表中删除所有非经理帐户的帐户。此时,任何需要帐户的关键字都会从列表中提取,并且保证只能获得经理帐户。

如果您下次调用关键字"我可以编辑内容",它会再次从列表中删除帐户,这次删除无法编辑内容的帐户。从那时起,任何需要帐户的关键字都可以从列表中选择,只能获得可以编辑内容的经理。

如果你打电话"我无法更新内容",它会再次从列表中删除项目。这次它将删除帐户列表中可以更新内容的任何项目。然后你会得到一个列表,a)a manger,b)可以编辑东西,c)不能更新东西。

通过将它们作为过滤器实现,您可以按任何顺序使用它们,并以您想要的任何方式组合它们:

Given I have a manager account
And I can update things

-OR -

Given I can cannot update things
And I have a manager account
And I cannot edit things

......等等。