学习GEB和Spock

问题描述 投票:9回答:1

我是一名试图学习GEB和Spock的手动测试员。要了解这些,我必须事先了解java或groovy吗?我一直在阅读GEB的书,先决条件,书籍或学习资源是什么?请帮忙。谢谢。

testing groovy automated-tests spock geb
1个回答
31
投票

我尝试编写一些必需品和一些“好吃的东西”,当我拿起Geb时,我发现它非常有用。

  1. 一些Groovy Magic。本手册中涵盖了您需要学习Groovy的所有内容,但出于显而易见的原因,如果您沉迷于语言,您可能需要考虑Groovy in Action。虽然不需要Java来获取Groovy,但如果你来自Java(闭包除外)甚至是Python背景,你可以浏览15分钟的教程并且你已经在那里了。
  2. 一点点硒。更多,更好,但不要害怕,这个single page告诉你所有你需要知道你通常会使用的Selenium Webdriver。但要强调,越多越好。
  3. jQuery选择器(每个人都说它很简单,但坦率地说,我每小时至少两次参考手册。我很笨,所以......)。如果您不熟悉jQuery,您可以从basic selectors开始,然后单击左侧导航菜单以获取更多信息。请注意,并非所有jQuery选择器都适用于Geb,但Geb教程的选择器部分并不是非常详尽和引人入胜。
  4. 在我的测试用例结束时,我需要生成一个跨越多个测试用例的幻想报告,并且我在测试用例中有依赖关系。所以,我去了TestNG而不是Spock。坦率地说,我没有给Spock很多机会。
  5. PageObjects实际上不是Geb的先决条件,但是PageObjects非常棒,以至于你从不想在它之外考虑Geb。 PageObjects是一个可爱的小模式,它表示您将HTML页面的结构包装到Object中,以便实际测试不必处理它。哈。有你。让我用简单的英语说。

比如,你有一个带有输入文本框的注册表单,其id为“nametext”。你如何得到文本框的句柄?在DOM术语中,在javascript中,你只需要做一个

 document.getElementById("nametext")

在Selenium,你会做一个非常相似的事情

 driver.findElement(By.id("nametext"))

所以,如果你想在Selenium的文本框中填充Jason,你会做一个

driver.findElement(By.id("nametext")).sendKeys("Jason"); 

如果您为所有输入字段执行此操作,很快您的测试用例就会变得丑陋和讨厌。而不是那样,在OO术语中,你封装了。你创建一个新的类,比如RegistrationPage并将你的findElementsendKeys包装成:

public class RegistrationPage{

    …

    public RegistrationPage fillRegistrationForm(String name, String email){

        driver.findElement(By.id("nametext")).sendKeys(name); 
        driver.findElement(By.id("emailtext")).sendKeys(email); 

    }

}

你会说,从你的测试案例中

  RegistrationPage regPage=new RegistrationPage();
  regPage.fillRegistrationForm("Jason","[email protected]");

(更好的想法是将输入值包装到类中并将其传递给fillRegistrationForm)

实际上,Geb以更好的方式利用PageObjects - jQuery选择器来拯救

class InputFormPage extends Page{

    …

    static content={
        name {$("input", id:"entry_0")}
        emailAddress {$("input", id:"entry_1")}
    }
 }

在你的测试用例中,你只想说

 name.value ("Jason")
 emailAddress.value ("[email protected]")
© www.soinside.com 2019 - 2024. All rights reserved.