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

北京-宏哥 北京-宏哥     2022-10-20     414

关键词:

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的使用,基本上这些使用我们在框架设计里都会涉及。

手把手教你做项目web框架flask篇——基础用法详解(代码片段)

目录导读为什么用flask安装flask启动flaskflask里name的用处转换器和变量规则重定向设置错误页面json数据读取cookie和session对cookie的获取和删除session操作request的使用蓝图开发必备视图资源分享导读今天接着为暑假的项目做准备,... 查看详情

手把手教你数据恢复编程基础知识篇

好了。接上一篇,本篇,我们将详细讲解NTFS文件系统的一些重要的数据结构,闲话少叙,咱们开讲。NTFS文件系统一、NTFS简介NTFS(NewTechnologyFileSystem)文件系统是微软公司同时和WindowsNT(NewTechnology࿰... 查看详情

手把手教你做项目多线程篇——基础知识详解(代码片段)

...特性锁互斥锁信号量送点资源导读随着暑假的推进,手把手教你做项目前边的准备也差不多了后续的项目也渐渐要开始了但是正式发出来可能要等一段时间前后端都是我一个人确实有点费力(毕竟我也是菜鸡),... 查看详情

大数据必学java基础(七十二):system类对io流的支持

文章目录System类对IO流的支持一、System的属性二、System.in三、System.out四、练习 查看详情

深度学习核心技术精讲100篇(七十四)-教你如何最快入门用户画像

前言大家可能经常会听到用户画像这个词,但是具体在做的时候又会觉得无从下手,或者认为只是常规的标签统计,这往往是一个误区。以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新... 查看详情

手把手教你数据恢复编程基础知识篇

前言忙了一个学期的事情,现在终于闲下来了,搞数据恢复,前前后后,也搞了一年多了,说起来不长也不久,为了参加全国信息安全竞赛,不知道花了多少时间,可是结果就是连复赛都没进,... 查看详情

深度学习核心技术精讲100篇(七十四)-教你如何最快入门用户画像

前言大家可能经常会听到用户画像这个词,但是具体在做的时候又会觉得无从下手,或者认为只是常规的标签统计,这往往是一个误区。以下是我为大家准备的几个精品专栏,喜欢的小伙伴可自行订阅,你的支持就是我不断更新... 查看详情

手把手教你实现java权限管理系统前端篇:用户管理模块

用户管理模块添加接口在http/moduls/user.js中添加用户管理相关接口。importaxiosfrom‘../axios‘/**用户管理模块*///保存exportconstsave=(params)=>{returnaxios({url:‘/user/save‘,method:‘post‘,params})}//删除exportconstdel=(params)=>{re 查看详情

手把手教你实现java权限管理系统前端篇(十四):菜单功能实现

菜单功能实现菜单接口封装菜单管理是一个对菜单树结构的增删改查操作。提供一个菜单查询接口,查询整颗菜单树形结构。http/modules/menu.js添加 findMenuTree接口。importaxiosfrom‘../axios‘/**菜单管理模块*///保存exportconstsave=(data)... 查看详情

手把手教你实现java权限管理系统前端篇(十六):系统备份还原

系统备份还原在很多时候,我们需要系统数据进行备份还原。我们这里就使用MySql的备份还原命令实现系统备份还原的功能。后台接口准备系统备份还原是对数据库的备份还原,所以必须有后台接口的支持,我们准备好了接口,... 查看详情

手把手教你实现java权限管理系统前端篇(十五):嵌套外部网页

嵌套外部网页在有些时候,我们需要在我们的内容栏主区域显示外部网页。如查看服务端提供的SQL监控页面,接口文档页面等。这个时候就要求我们的导航菜单能够解析嵌套网页的URL,并根据URL路由到相应的嵌套组件。接下来我... 查看详情

手把手教你区块链java开发智能合约nft-第五篇(铸造第一个nft)(代码片段)

文章目录手把手教你区块链java开发智能合约nft-第五篇(铸造第一个NFT)回顾部署NFT721铸造NFT根据tokenId查看NFT链上数据完整代码[NFT721相关智能合约源码下载](https://download.csdn.net/download/huangxuanheng/86260438)手把手教你区块链j... 查看详情

手把手教你做项目mysql篇——从下载到命令总结(代码片段)

目录导读下载MySQL篇基础命令篇操作前的提示登录篇对数据库命令操作篇对表的操作删除表(这个单独说一下)对数据操作篇结尾送书导读有段时间没有好好整理文章了,这不是又该暑假啦嘛肥学准备在暑假来波大的&... 查看详情

手把手教你区块链java开发智能合约nft-第一篇(代码片段)

文章目录手把手教你区块链java开发智能合约nft-第一篇安装基础环境编写智能合约使用web3j开源框架生成java代码手把手教你区块链java开发智能合约nft-第一篇刚接触区块链开发,使用java开发,真的是太难了,自己一步... 查看详情

手把手教你玩转极验滑块js逆向系列:滑块底层图片还原(代码片段)

难道向上攀登的路,不比站在顶峰更让人沸腾吗?哈喽,好久不见呐,距离上次b站登录那篇爬虫博客后,小夜斗又去学习java知识辽,但是最近在研究js逆向,想把小夜斗最近学习到的一点点经验分享大... 查看详情

手把手教你玩转极验滑块js逆向系列:滑块底层图片还原(代码片段)

难道向上攀登的路,不比站在顶峰更让人沸腾吗?哈喽,好久不见呐,距离上次b站登录那篇爬虫博客后,小夜斗又去学习java知识辽,但是最近在研究js逆向,想把小夜斗最近学习到的一点点经验分享大... 查看详情

手把手教你玩转极验滑块js逆向系列:滑块底层图片还原(代码片段)

难道向上攀登的路,不比站在顶峰更让人沸腾吗?哈喽,好久不见呐,距离上次b站登录那篇爬虫博客后,小夜斗又去学习java知识辽,但是最近在研究js逆向,想把小夜斗最近学习到的一点点经验分享大... 查看详情

手把手教你写一个java的orm(完)(代码片段)

生成sql:select上一篇讲了怎样生成一个sql中where的一部分,之后我们要做事情就简单很多了,就只要像最开始一样的生成各种sql语句就好了,之后只要再加上我们需要的条件,一个完整的sql就顺利的做好了。现在我们开始写生成... 查看详情