Automation 为什么我们要在robot框架中创建用户关键字?

Automation 为什么我们要在robot框架中创建用户关键字?,automation,automated-tests,robotframework,Automation,Automated Tests,Robotframework,在什么情况下需要定义用户关键字?为了创建用户关键字,是否有必要创建自定义库。在以下两种情况下,创建用户定义的关键字会节省一些时间,而且效率更高: 可能不止一次地调用一个关键字(比如在循环中或其他) 每次都使用不同的输入变量 组织您的测试,使其易于人类阅读 您可以使用自己的关键字来完成正常关键字集无法完成的任务。你可以用Python编程。此外,您还可以在自定义关键字中组合现有关键字以执行更困难的任务 您不需要自定义库。只需将您的关键字放在***关键字***行后面。关键字的使用赋予了robot框架强

在什么情况下需要定义用户关键字?为了创建用户关键字,是否有必要创建自定义库。

在以下两种情况下,创建用户定义的关键字会节省一些时间,而且效率更高:

  • 可能不止一次地调用一个关键字(比如在循环中或其他) 每次都使用不同的输入变量
  • 组织您的测试,使其易于人类阅读

  • 您可以使用自己的关键字来完成正常关键字集无法完成的任务。你可以用Python编程。此外,您还可以在自定义关键字中组合现有关键字以执行更困难的任务


    您不需要自定义库。只需将您的关键字放在
    ***关键字***
    行后面。

    关键字的使用赋予了robot框架强大的功能。它是为验收测试驱动的开发而设计的。验收测试通常使用用户的语言编写,并且通常由产品所有者或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
    
    上述测试与实现紧密耦合,如果页面的实现发生更改,则必须进行更改。这种类型的测试对于客户或产品负责人来说很难阅读——他们不关心元素的名称,甚至不关心登录需要什么。他们唯一关心的是是否有足够的测试覆盖新特性的行为

    通过使用自定义关键字(可以编写为robot关键字,也可以实现为页面对象),测试可以如下所示:

    | | 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
    
    这个例子更好地表达了测试的意图,不管它是如何实现的。这测试的是功能,而不是实现。这是一种产品所有者或客户可以轻松阅读的测试类型,以验证是否执行了正确的测试

    结合使用页面对象,这将成为一种非常强大的机制。您的产品所有者和测试专业人员可以专注于要测试的特性,而不必关心实现


    实现细节可以放在页面对象定义中,页面对象定义可以与页面本身的实现位于同一代码存储库中。当开发人员更改页面时,他们可以更改关键字的实现以进行匹配,而不必更改任何实际的测试用例。

    你在说什么?