Selenium-TestNG
TestNG是一个功能强大的测试框架,是JUnit的增强版本,在TestNG出现之前就已经使用了很长时间。NG 代表“下一代”。
TestNG 框架提供以下功能 -
- 注释可以帮助我们轻松组织测试。
- 灵活的测试配置。
- 测试用例可以更容易地分组。
- 测试的并行化可以使用 TestNG 来实现。
- 支持数据驱动测试。
- 内置报告。
为 Eclipse 安装 TestNG
步骤 1 - 启动 Eclipse 并选择“安装新软件”。
步骤 2 - 输入 URL“http://beust.com/eclipse”,然后单击“添加”。
步骤 3 - 将打开对话框“添加存储库”。输入名称“TestNG”,然后单击“确定”
步骤 4 - 单击“全选”,将选择“TestNG”,如图所示。
步骤 5 - 单击“下一步”继续。
步骤 6 - 检查所选项目并单击“下一步”。
步骤 7 - “接受许可协议”并单击“完成”。
步骤 8 - TestNG 开始安装,进度如下所示。
步骤 9 - 由于无法确定软件的有效性,因此弹出安全警告。单击“确定”。
步骤 10 - 安装程序提示重新启动 Eclipse 以使更改生效。单击“是”。
TestNG 中的注释
注解在 JDK 5 中正式添加到 Java 语言中,TestNG 选择使用注解来注解测试类。以下是使用注释的一些好处。有关 TestNG 的更多信息可以在这里找到
TestNG 通过查找注释来识别它感兴趣的方法。因此,方法名称不限于任何模式或格式。
我们可以将附加参数传递给注释。
注释是强类型的,因此编译器会立即标记任何错误。
测试类不再需要扩展任何东西(例如 JUnit 3 的 TestCase)。
先生。 | 注释和描述 |
---|---|
1 | @BeforeSuite 在该套件中的所有测试运行之前,带注释的方法将仅运行一次。 |
2 | @AfterSuite 带注释的方法将仅在该套件中的所有测试运行后运行一次。 |
3 | @课前 在调用当前类中的第一个测试方法之前,带注释的方法将仅运行一次。 |
4 | @下课以后 被注解的方法只会在当前类中的所有测试方法运行完毕后运行一次。 |
5 | @测试前 带注释的方法将在运行属于 <test> 标记内的类的任何测试方法之前运行。 |
6 | @测试后 带注释的方法将在属于 <test> 标记内的类的所有测试方法运行后运行。 |
7 | @BeforeGroups 此配置方法之前将运行的组的列表。该方法保证在调用属于任何这些组的第一个测试方法之前不久运行。 |
8 | @AfterGroups 此配置方法将在其后运行的组列表。该方法保证在调用属于任何这些组的最后一个测试方法后不久运行。 |
9 | @方法之前 带注释的方法将在每个测试方法之前运行。 |
10 | @AfterMethod 带注释的方法将在每个测试方法之后运行。 |
11 | @DataProvider 将方法标记为为测试方法提供数据。带注释的方法必须返回一个Object[][],其中每个Object[]可以分配测试方法的参数列表。想要从此 DataProvider 接收数据的 @Test 方法需要使用与该批注名称相同的 dataProvider 名称。 |
12 | @工厂 将方法标记为工厂,该工厂返回将由 TestNG 作为测试类使用的对象。该方法必须返回 Object[ ]。 |
13 | @听众 定义测试类的侦听器。 |
14 | @参数 描述如何将参数传递给@Test方法。 |
15 | @测试 将类或方法标记为测试的一部分。 |
TestNG-Eclipse 设置
步骤 1 - 启动 Eclipse 并创建一个“新 Java 项目”,如下所示。
步骤 2 - 输入项目名称并单击“下一步”。
步骤 3 - 导航到“库”选项卡,然后单击“添加外部 JAR”来添加 Selenium 远程控制服务器 JAR 文件,如下所示。
步骤 4 - 添加的 JAR 文件显示在此处。单击“添加库”。
步骤 5 - “添加库”对话框打开。选择“TestNG”,然后在“添加库”对话框中单击“下一步”。
步骤 6 - 添加添加的“TestNG”库,并显示如下。
步骤 7 - 创建项目后,项目的结构如下所示。
步骤 8 - 右键单击“src”文件夹并选择“新建>>其他”。
步骤 9 - 选择“TestNG”并单击“下一步”。
步骤 10 - 选择“源文件夹”名称并单击“确定”。
步骤 11 - 选择“包名称”、“类名称”,然后单击“完成”。
步骤 12 - 将显示包资源管理器和创建的类。
TestNG 中的第一次测试
现在让我们开始使用 TestNG 编写脚本。让我们为用于理解 WebDriver 的同一示例编写脚本。我们将使用演示应用程序www.calculator.net并执行百分比计算器。
在下面的测试中,您会注意到没有 main 方法,因为 testNG 将驱动程序执行流程。初始化驱动程序后,它将执行“@BeforeTest”方法,然后执行“@Test”,然后执行“@AfterTest”。请注意,一个类中可以有任意数量的“@Test”注释,但“@BeforeTest”和“@AfterTest”只能出现一次。
package TestNG; import java.util.concurrent.TimeUnit; import org.openqa.selenium.*; import org.openqa.selenium.firefox.FirefoxDriver; import org.testng.annotations.AfterTest; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class TestNGClass { WebDriver driver = new FirefoxDriver(); @BeforeTest public void launchapp() { // Puts an Implicit wait, Will wait for 10 seconds before throwing exception driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); // Launch website driver.navigate().to("http://www.calculator.net"); driver.manage().window().maximize(); } @Test public void calculatepercent() { // Click on Math Calculators driver.findElement(By.xpath(".//*[@id='menu']/div[3]/a")).click(); // Click on Percent Calculators driver.findElement(By.xpath(".//*[@id='menu']/div[4]/div[3]/a")).click(); // Enter value 10 in the first number of the percent Calculator driver.findElement(By.id("cpar1")).sendKeys("10"); // Enter value 50 in the second number of the percent Calculator driver.findElement(By.id("cpar2")).sendKeys("50"); // Click Calculate Button driver.findElement(By.xpath(".//*[@id='content']/table/tbody/tr/td[2]/input")).click(); // Get the Result Text based on its xpath String result = driver.findElement(By.xpath(".//*[@id='content']/p[2]/span/font/b")).getText(); // Print a Log In message to the screen System.out.println(" The Result is " + result); if(result.equals("5")) { System.out.println(" The Result is Pass"); } else { System.out.println(" The Result is Fail"); } } @AfterTest public void terminatetest() { driver.close(); } }
执行
要执行,请右键单击创建的 XML 并选择“运行方式”>>“TestNG Suite”
结果分析
输出被发送到控制台,如下所示。控制台输出还有执行摘要。
TestNG 的结果也可以在不同的选项卡中看到。单击“HTML 报告视图”按钮,如下所示。
HTML 结果将显示如下。