功能自动化测试之TestNg测试框架(一)

本文介绍了TestNG自动化测试框架的使用,包括环境搭建、注解解析、断言操作和参数化测试。详细讲解了@BeforeClass、@AfterClass、@Test等注解的含义和用法,以及如何通过@DataProvider进行参数化测试。通过示例代码展示了如何利用TestNG提高测试代码的复用性和可维护性。
摘要由CSDN通过智能技术生成

说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/103892214

一、什么是测试框架

  • 自动化测试框架是由一个或多个自动化测试基础模块、自动化测试管理模块、自动化测试统计模块等组成的工具集合。

  • 在上一篇博客中使用Selenium框架操作浏览器编写脚本完成了webtours案例的自动化订票,但是编写的代码,不能进行复用,换句话说如果将上一篇的代码用于其他网站则需要全部重新编写,复用性极低

二、搭建 TestNG 框架环境

1.什么是 TestNG

  • 是一个开源自动化测试框架,TestNG 表示下一代。
  • 用于设置测试前的准备代码,测试代码,测试完毕后的处理代码。
  • 在前面的Java白盒测试用的是JUnit框架

2.安装 testng-6.14.zip

  • 离线安装
    ✔     (先断网)帮助→安装新软件→添加,位置选择 achive,选择 zip 文件即可。

  • 网络安装
    ✔     帮 助 → 安 装 新 软 件 → 联 网 安 装 testing , Work with 下 输 入 :http://beust.com/eclipse→添加→勾选 TestNG

  • 这里博主采用离线安装,帮助——安装新软件
    在这里插入图片描述

  • 选择testng安装包
    在这里插入图片描述

  • 选择全部安装
    在这里插入图片描述

  • 接受协议,完成安装
    在这里插入图片描述

三、使用 TestNG 中注解进行测试

1.什么是注解

  • 表示“在某些阶段必然被调用的代码”;
  • 下面的注解一般用于修饰测试方法,测试方法名随意。

2.常用注解

2.1 @BeforeClass 注解

  • 在调用当前类的第一个测试方法之前运行。

2.2 @AfterClass 注解

  • 在调用当前类的最后一个测试方法之后运行。

2.3 @BeforeMethod 注解

  • 在每个测试方法之前运行。

2.4 @AfterMethod 注解

  • 在每个测试方法之后运行。

2.5 @Test(属性 1=值 1,属性 2=值 2,…)注解

  • 用于修饰测试方法,表示要对被测试类的某个或某些方法进行测试。

  • 属性
    ✔     description=“测试描述”
    ✔     priority=优先级(从 0 开始)
    ✔     enabled=false(false 表示忽略测试)
    ✔     timeOut=?ms(限时测试,一旦测试的内容运行超过了该时间长度,那么将会终止,同时标记为 failed)
    ✔     dataProvider=“Dataprovider 的名称或方法名”
    ✔     dataProviderClass=产生测试数据的类

2.6 @DataProvider(name=“参数集名”)注解

  • 用于修饰获得参数的方法。
    ✔     此方法用于生成测试数据。
    ✔     @Listeners({TestReport.class}) //监听测试报告类

2.7 使用注解对webtours案例代码进行拆分

  • 对webtours案例中创建驱动对象代码进行拆分,使用@BeforeClass注释提取代码中打开浏览器操作,因为该操作只进行一次并且是一开始就进行的
    在这里插入图片描述
  • 使用@AfterClass注解来关闭浏览器
    在这里插入图片描述
  • 将打开网站操作使用@Test注解封装成一个方法,将之前打开网站的代码剪切进来,博主这里对打开网站检查点结果进行了if判断
    在这里插入图片描述
  • 在每个方法执行完成后,为了防止程序运行太快,检查点无法通过,所以通过@AfterMethod注释在每个测试方法执行完后执行的方法中添加等待时长
    在这里插入图片描述
  • 拆分出登录代码,封装到@Test注解的方法中
    在这里插入图片描述
  • 拆分出订票的代码,封装到findFlights方法中,在代码中的等待时长跟@AfterMethod注解方法中的不一样,注解中的是没执行一个@Test注解的测试方法则会调用@AfterMethod注解的waitTime方法等待3秒,而代码中的等待3秒只限于三次订票中的等待
    在这里插入图片描述
    在这里插入图片描述
  • 剩下的为注销模块
    在这里插入图片描述
  • 完整代码如下
package test;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.Select;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

public class TNGTest {
   
	WebDriver driver;
	
	@BeforeClass
	public void startChorme(){
   
		// 打开谷歌浏览器
		System.setProperty("webdriver.chrome.driver", "C:/Users/Administrator/Desktop/bro_tool/chromedriver.exe");
		WebDriver driver=new ChromeDriver();
	}
	
	@AfterClass
	public void endChorme(){
   
		// 关闭浏览器
		driver.quit();
	}
	
	@AfterMethod
	public void waitTime() throws Exception{
   
		// 等待时间
		Thread.sleep(3000);
	}
	
	@Test(description="打开网站")
	public void openUrl(){
   
		String url="http://localhost:1080/webtours/";
		driver.get(url);
		// 检查打开网站
		driver.switchTo().frame("body");
		driver.switchTo().frame("info");
		boolean openResult = driver.findElement(By.tagName("body"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cdtaogang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值