【问题标题】:Robot Framework - Using Resource FilesRobot Framework - 使用资源文件
【发布时间】:2016-07-04 07:31:39
【问题描述】:

我有一个测试文件,用于检查应用程序每个页面上是否存在所有关键元素(每页一个场景)。但是,该应用程序相当复杂,并且具有不同类型的用户(管理员、普通用户等),我希望能够与每种类型的用户一起浏览相同的 pages.robot 文件(并且可能有一些 if 语句在每个类型的用户的pages.robot 文件中),但我不确定我应该怎么做。我猜我应该使用Resource File 并使用admin、regular 等设置全局userType 变量并多次运行pages.robot 文件(每个用户类型一次)但我不知道如何设置Resource File 和userType 变量。

关于Resource File 的外观以及如何为每种类型的用户运行相同文件的任何想法?

【问题讨论】:

  • 您的意思是说页面上的控件(您打算检查其存在)取决于用户的类型?
  • 我认为这不是正确的方法。您应该考虑以可重用的方式编写此存在检查,并且每种类型的用户都应该有自己的测试用例。那么也许你也可以避免 if 语句降低复杂性和提高可读性。
  • @MukeshTakhtani 是的,当使用管理员凭据(例如 Edit User 和 Delete User 按钮)登录时,页面上的某些元素应该存在,但在使用其他类型的用户登录时不可用。 @soyacz 这是我的第一个想法,但是页面很多,当发生某些更改时,我不想更改每个文件中的所有内容,因此出于维护原因,我宁愿使用这种方法(我并不真正关心可读性所以在这一点上很多)。
  • 好的关键字是为改变想法而创建的。这就是为什么您应该创建诸如“编辑用户按钮应该可见”之类的关键字,因此如果发生更改,您只需更改此关键字。而这些关键字应该是从资源文件中加载的,所以每个 page.robot 文件都会加载它。但也许我不明白这里的细节,所以这个建议不适合它。

标签: global-variables robotframework resource-files


【解决方案1】:

您可以将测试用户配置/属性存储在资源文件(例如 test_properties.txt)中,如下所示:

=== test_properties.txt ===

| *** Variables *** |
| ${tp_app_url}  | http://yourapp.com |
| ${tp_browser}  | firefox |
| ###### user roles to test with - admin, non-admin, regular |
| ${tp_user_type} | admin |
| ###### test users   |
| ${tp_admin_user} | admin@app.com |
| ${tp_admin_password} | admin@123 |
| ${tp_regular_user} | regular@app.com |
| ${tp_regular_password} | regular@123 |

在这里,您想用来测试您的应用程序的用户角色/类型定义为:

| ###### user roles to test with - admin, regular |
| ${tp_user_type} | admin |

然后您的测试套件文件可以导入以上资源文件,如下所示:

=== testsuite.txt ===

| *** settings *** |
| Library        | Selenium2Library |
| Resource       | test_properties.txt |

| *** test cases *** |
| Validate Page Controls |
|    | Open Browser To Login Page | ${tp_user_type} |
|    | Page Controls Should be Visible | ${tp_user_type} |

| *** keywords *** |
| Open Browser To Login Page |
|    | [Arguments] | ${user_type} |
|    | Open Browser | ${tp_app_url} | ${tp_browser} |
|    | Input Username | ${tp_${user_type}_user} |
|    | Input Password | ${tp_${user_type}_password} |
|    | Submit Credentials |
|    | Title Should Be | Welcome Page |

| Input Username |
|    | [Arguments] | ${username} |
|    | Input Text | username_field | ${username} |

| Input Password |
|    | [Arguments] | ${password} |
|    | Input Text | password_field | ${password} |

| Submit Credentials |
|    | Click Button | login_button |

| Page Controls Should be Visible |
|    | [Arguments] | ${user_type} |

与验证页面控件相关的代码可能位于关键字Page Controls Should be Visible 中,它将根据用户类型参数执行检查。

注意:测试用户的用户 ID 和密码变量在这里通过将用户类型变量嵌入为:${tp_${user_type}_user} 在我们的例子中被评估为${tp_admin_user} 来形成。

在执行过程中,你可以在命令行传递${tp_user_type}的值,它会覆盖资源文件中设置的值。

pybot --variable tp_user_type:non-admin path/to/your/testfile

如果您想对多个用户类型运行相同的测试,您可以创建一个批处理文件,如:

pybot --variable tp_user_type:non-admin path/to/your/testfile
pybot --variable tp_user_type:admin path/to/your/testfile
pybot --variable tp_user_type:regular path/to/your/testfile

我相信会有比这更好的解决方案来解决您的问题。理想情况下,上面在测试套件文件中定义的关键字应该驻留在资源文件中。您还可以创建一个data-driven test 来为每个用户类型运行您的模板关键字(用于验证页面控件)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-21
    • 2017-06-15
    • 2012-04-10
    • 2021-10-17
    • 2021-10-18
    • 2015-08-08
    • 2018-11-25
    • 2019-11-12
    相关资源
    最近更新 更多