【发布时间】:2023-03-06 21:05:01
【问题描述】:
在什么情况下需要定义用户关键字?是否需要创建自定义库才能创建用户关键字。
【问题讨论】:
-
你在说什么?
标签: automation automated-tests robotframework
在什么情况下需要定义用户关键字?是否需要创建自定义库才能创建用户关键字。
【问题讨论】:
标签: automation automated-tests robotframework
关键字的使用赋予了机器人框架强大的功能。它是为验收测试驱动的开发而设计的。验收测试通常以用户的语言编写,并且通常由产品负责人或 QA 专业人员在开发的早期阶段编写。
如果您不编写自己的自定义关键字,则通向仪表板的登录页面的验收测试可能必须如下所示:
| | open browser | http://www.example.com | chrome
| | go to | http://www.example.com/login
| | input string | xpath=//form/input[@name='username'] | ${username}
| | input string | xpath=//form/input[@name='password'] | ${password}
| | submit form
| | wait until page contains element | xpath=//div[@id='dashboard_frame']
| | page should contain | welcome to Example.com!
上述测试与实现紧密耦合,如果页面的实现发生变化,则必须进行更改。这种类型的测试对于客户或产品所有者来说很难阅读——他们不会关心元素的名称,甚至根本不需要登录。他们唯一关心的是是否有足够的测试来覆盖行为的新功能。
通过使用自定义关键字,无论是编写为机器人关键字还是实现为页面对象,测试可能如下所示:
| | Go to the login page
| | Log in with valid credentials
| | Verify we are on the dashboard page
这个例子更好地表达了测试的意图,不管它是如何实现的。这测试了一个功能而不是一个实现。这是产品所有者或客户可以轻松阅读以验证正在执行正确测试的测试类型。
结合页面对象的使用,这成为一个非常强大的机制。您的产品所有者和测试专业人员可以专注于要测试的功能,而不必关心实施。
实现细节可以放在页面对象定义中,这些定义可以与页面本身的实现存在于相同的代码存储库中。当开发人员更改页面时,他们可以更改关键字的实现以匹配,而无需更改任何实际测试用例。
【讨论】:
我想说,在以下两种情况下创建用户定义的关键字会节省时间并且效率更高:
【讨论】:
您使用自己的关键字来完成使用普通关键字无法完成的任务。你可以用 Python 对它们进行编程。您还可以在自定义关键字中组合现有关键字来完成更困难的任务。
您不需要自定义库。只需将您的关键字放在*** Keywords *** 行后面即可。
【讨论】: