《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)

简介: 【6月更文挑战第13天】本文介绍了TestNG单元测试框架,它是一个灵感来源于JUnit和NUnit的测试框架,支持多种级别的测试,如单元测试、集成测试等。TestNG的特点包括丰富的注解、数据驱动测试、变量支持、自动生成HTML测试报告等。与JUnit和NUnit相比,TestNG在某些功能上更为强大。文章还详细讲解了如何在Eclipse中安装TestNG插件,提供了在线安装、更新站点安装和离线安装三种方法,并展示了安装成功的验证步骤。最后,通过一个项目实战案例展示了如何使用TestNG编写和运行测试代码。

1.简介

前面文章细心的小伙伴会发现宏哥在运行测试用例的时候有的是在main方法下,而有的不需要用main方法去执行用例,那么为什么有的就不需要在main方法下就能够成功运行测试用例了。这就需要单元测试框架的支持,这篇宏哥就来简单介绍TestNG单元测试框架的安装和基本使用。

2.什么是testng?

TestNG按照官方的定义:TestNG是一个测试框架,其灵感来自JUnit和NUnit,但引入了一些新的功能,使其功能更强大,使用更方便。

TestNG是一个测试框架,它能覆盖不同层级的测试,例如,单元测试,集成测试,端对端测试等。我们可以把Selenium和TestNG结合一起,在Eclipse中用Java写TestNG脚本。

3.testng的特点

1)注释,很多注释提供

2)支持数据驱动测试(@DataProvider)

3)支持变量

4)自动生成测试报告

5)通过配置testng.xml,我们可以只执行测试失败的用例

6)支持很多IDE工具(Eclipse等)

7)默认JDK支持监控运行和日志

8)独立的程序服务器测试方法(API)

4.TestNG 、Junit和Nunit区别

1)三者都是独立于测试框架,在市场上都可以免费得到。

2)TestNG和Junit在JAVA上使用,Nunit在C#上使用

3)Junit是Eclipse自带工具,TestNG需要自己安装插件

4)相对TestNG而言,Junit的注释很少

5)Junit不能生成html格式报告,TestNG能生成丰富的html报告

其他对比就不讲了,有兴趣可以到各自官网去查看。

5.在Eeclipse中安装testNG

在官网上部导航区域点击“Download”链接,该页面介绍了集成TestNG的不同方式。

在“Eclipse plug-in”区域介绍了两种Eclipse安装插件的方式。

硬性要求:JDK1.7以上版本、Eclipse4.2以上版本。

Java 1.7+ is required for running the TestNG for Eclipse plugin.

Eclipse 4.2 and above is required. Eclipse 3.x is NOT supported any more, please update your Eclipse to 4.2 or above.

两种在线安装方式:

5.1通过Eclipse Marketplace安装

1)打开Eclipse Help ->MarketPlace,在搜索框里面输入TestNG搜索,然后安装TestNG插件。

2)点击“Install”,稍等几分钟,等待插件下载

3)下载成功后,点击“Confirm”,进行安装(其中第二个Maven项目可选择安装也可以不安装,但是宏哥建议都安装上)

4)稍等一会等待安装

5.2通过Update Site安装

1) 通过update site也可以进行插件的安装,方法是:在Eclipse中点击Help菜单,选择Install New Software选项,在弹出页面中输入安装地址:http://beust.com/eclipse即可安装。

5.3离线安装TestNG插件

受网络等因素影响,在线安装方式速度比较慢,可以通过如下方式离线安装TestNG插件。

1)通过testng下载网址找到插件下载地址,

2)浏览器直接访问网址, http://beust.com/eclipse

3)选择最下部的zipped文件夹链接;

4)选择版本,如:“7.0.0.201908240652/

5)点击超链接,即可下载离线安装文件。

6)解压压缩包,文件目录如下图所示。可以把features和plugins中的内容分别拷贝到eclipse对应文件夹;

      或把解压后的整个目录拷贝到dropins中。

      验证是否安装成功:

    a) 打开命令行,到当前eclipse的目录下,输入eclipse -clean,重新启动eclipse,这样eclipse就会加上新的插件了。

    b) 如果插件不能生效,则请将eclipse\configuration\org.eclipse.update目录删除后再启动eclipse。

7) 不解压文件,通过eclipse的Install new software安装。

8)点击Add,弹出Install Repository对话框,填写Name,点击“Archive”按钮,选择本地要安装的Jar或者Zip文件,如下图:

9)点击OK,如下图:

10)根据需求勾选上列表框中的安装项,点击“Next”,然后根据提示一直往下操作,直到Finish,这样就完成了。

5.4验证插件安装是否成功

1)打开Eclipse,新建-other,选择“TestNG——>TestNG Class”。

2)出现上边截图这个说明插件安装成功。

至此环境搭建完成,可以开始写测试的case了。

6..新建一个TestNG类

1)在一个包下,鼠标右键,New->other,点击TestNG,然后选择TestNG class,如下图所示:

2)点击Next,class name命名为:FirstTestNgClass,勾选Beforeclass和Afterclass,如下图所示:

3)点击“Finish”完成类的创建。

在BeforeClass中写启动浏览器脚本。在AfterClass中写退出浏览器代码,在@Test中写我们测试脚本。记住,所有有关测试脚本,都需要写到@Test下的方法,也就是说,你写这个函数或者方法是关于测试脚本的,那么你就要在该方法前面加上@Test这个注释,可以添加多个@Test的测试函数。

7.项目实战

7.1代码设计

宏哥把启动浏览器和浏览器最大化放在了setup方法里,一般setup方法是写一些用例的前置条件,而@Test注释的方法才是我们测试脚本,afterClass方法里一般写清除测试数据之类的操作,webUI自动化测试一般写退出浏览器操作。

7.2参考代码

package lessons;


import org.openqa.selenium.By;

import org.openqa.selenium.WebDriver;

import org.openqa.selenium.chrome.ChromeDriver;

import org.testng.annotations.Test;

import org.testng.annotations.BeforeClass;

import org.testng.annotations.AfterClass;


/**

* @author 北京-宏哥

*

* @公众号:北京宏哥

*

* 《手把手教你》系列基础篇(七十二)-java+ selenium自动化测试-框架设计基础-TestNG简单介绍(详解教程)

*

* 2022年2月21日

*/

public class FirstTestNgClass {


 WebDriver driver;

 @Test

 public void OpenBaidu() {

     

     driver.get("https://www.baidu.com");

     driver.findElement(By.id("kw")).sendKeys("Selenium");

     driver.findElement(By.id("su")).click();

 }

 @BeforeClass

 public void beforeClass() {

     

     System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe");

     driver = new ChromeDriver();

     driver.manage().window().maximize();

     

 }


 @AfterClass

 public void afterClass() {

     

   try {

       Thread.sleep(2000);

       driver.quit();

   } catch (InterruptedException e) {

       // TODO Auto-generated catch block

       e.printStackTrace();

   }

 }


}

7.3运行代码

1)运行代码,右键Run AS->TestNG Test,控制台输出,如下图所示:

2)运行代码后电脑端的浏览器的动作,如下小视频所示:

8.测试报告

TestNG自带测试报告,每次运行TestNG都会生成一个测试报告,你可以在运行结束后,右键你eclipse项目-刷新,然后就可以看到项目的根目录下生成一个test-output的文件夹,你可以右键open with->Web Browser打开emailable-report.html,如下图所示:

9.小结

好了,时间不早了,今天关于TestNG的安装和简单使用就介绍到这里,下面几篇文章都会陆续介绍TestNG的使用,基本上这些使用我们在框架设计里都会涉及。



每天学习一点,今后必成大神-


往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问):


Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

相关文章
|
1天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十九)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-下篇(详解教程)
【6月更文挑战第20天】TestNG是一个Java测试框架,提供两种测试方法依赖机制:强依赖(所有前置方法成功后才运行)和弱依赖(即使前置方法失败,后置方法仍运行)。文中通过代码示例展示了这两种依赖如何实现,并解释了当依赖方法失败时,如何影响后续方法的执行。文章还包含了TestNG Suite的运行结果截图来辅助说明。
22 8
|
2天前
|
测试技术 Python
Python教程:利用timeit模块对代码进行性能测试
在Python中,了解代码的性能是优化和改进的关键。timeit模块是Python标准库中的一个工具,用于测量代码片段的执行时间。本文将介绍timeit模块的各种接口、命令行使用方法以及如何对代码中的函数或类进行性能测试。
9 3
|
2天前
|
XML Web App开发 测试技术
《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
【6月更文挑战第19天】本文介绍了使用TestNG框架配置XML文件来管理测试用例的分组和依赖关系。
14 2
|
17天前
|
存储 安全 测试技术
《手把手教你》系列技巧篇(六十三)-java+ selenium自动化测试 - cookie -上篇(详细教程)
【6月更文挑战第4天】本文介绍了Cookie和Session的概念及其用途。Cookie是服务器发送到浏览器并存储在本地的小型文本文件,用于记录用户信息,如登录状态。它分为会话Cookie(关闭浏览器即消失)和永久Cookie(设置过期时间)。Session则是在服务器端保存用户状态的一种方式,比Cookie更安全,但会占用服务器资源。Selenium提供了操作Cookie的API,包括添加、删除和获取Cookie。文章还提到了Cookie的优缺点,如大小限制和潜在的安全风险。
21 1
《手把手教你》系列技巧篇(六十三)-java+ selenium自动化测试 - cookie -上篇(详细教程)
|
3天前
|
Java 测试技术 Python
《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)
【6月更文挑战第18天】TestNG是一个Java测试框架,它允许在测试方法间定义执行顺序和依赖关系。当不指定依赖时,TestNG默认按方法名首字母排序执行。`@Test`注解的`dependsOnMethods`属性用于指定方法依赖,如`test1`依赖`test4`,则实际执行顺序为`test4`、`test2`、`test3`、`test1`。如果依赖的方法失败,后续依赖的方法将被跳过。此外,`dependsOnGroups`属性通过组名指定依赖,方便管理多个相关测试方法。通过`groups`定义方法所属组,然后在其他方法中用`dependsOnGroups`引用这些组。
20 5
|
2天前
|
数据可视化 前端开发 Java
自动化测试框架的选择与实践: Selenium vs. TestComplete
【6月更文挑战第18天】在软件开发的海洋中,自动化测试是一艘能够确保产品质量和效率的坚固船只。本文将深入探讨两种流行的自动化测试框架——Selenium和TestComplete,从它们的优势、局限性到适用场景进行对比分析。我们将通过实际案例来揭示如何根据项目需求选择最合适的测试工具,并提供一些实用的实施建议。文章旨在为读者提供清晰的指导,帮助他们在自动化测试的旅程中做出明智的决定。
8 3
|
7天前
|
Web App开发 XML 安全
《手把手教你》系列基础篇(七十三)-java+ selenium自动化测试-框架设计基础-TestNG实现启动不同浏览器(详解教程)
【6月更文挑战第14天】本文介绍了如何使用TestNg进行自动化测试,特别是通过变量参数启动不同浏览器的步骤。
20 5
|
5天前
|
XML 测试技术 数据格式
《手把手教你》系列基础篇(七十五)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 中篇(详解教程)
【6月更文挑战第16天】本文介绍了TestNG中`@DataProvider`的两种使用方法。本文通过实例展示了TestNG如何利用`@DataProvider`结合方法名和`ITestContext`来灵活地为测试方法传递参数。
12 1
|
9天前
|
JavaScript Java 测试技术
《手把手教你》系列技巧篇(七十一)-java+ selenium自动化测试-自定义类解决元素同步问题(详解教程)
【6月更文挑战第12天】本文介绍了如何创建一个自定义类库来解决自动化测试中的元素同步问题。作者指出,大部分错误源于元素因时间不同步而引发,为此提供了一种解决方案。在项目实践中,首先在`library`包下创建名为`MyWait`的类,包含一个方法`isElementPresent`,该方法通过循环尝试并等待指定元素出现,避免了直接使用时间等待可能导致的不准确性。之后,在测试类中调用此自定义方法,成功实现了元素同步。代码示例展示了如何在Java+Selenium自动化测试中应用这个自定义类。
30 2
|
13天前
|
XML Java 测试技术
《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
【6月更文挑战第8天】本文介绍了Java中操作Excel的工具,包括POI和JXL。POI支持处理Office 2003及以下的OLE2格式(.xls)和2007以上的OOXML格式(.xlsx)。而JXL只能处理2003版本的Excel文件。文章详细讲解了如何下载和使用JXL库,并给出了一个简单的Java代码示例,展示如何读取2003版Excel文件中的数据。在实际项目中,由于JXL对新版本Excel的支持限制,通常推荐使用POI。
29 5