TestNG 入门教程

2024-09-06 15:18
文章标签 入门教程 testng

本文主要是介绍TestNG 入门教程,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

阅读目录

  1. TestNG介绍
  2. 在Eclipse中在线安装TestNG
  3. 在Eclipse中离线安装Testng
  4. TestNG最简单的测试
  5. TestNG的基本注解
  6. TestNG中如何执行测试
  7. 使用testtng.xml 文件执行 case 
  8. TestNG按顺序执行Case
  9. TestNG异常测试
  10. TestNG组测试
  11. TestNG参数化测试
  12. TestNG忽略测试
  13. TestNG 依赖测试
  14. TestNG测试结果报告

 

TestNG介绍

TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit,   功能都差不多, 只是功能更加强大,使用也更方便

Java中已经有一个JUnit的测试框架了。  TestNG比JUnit功能强大的多。  测试人员一般用TestNG来写自动化测试。  开发人员一般用JUnit写单元测试。

官方网站: http://testng.org/doc/index.html

 

在Eclipse中在线安装TestNG

打开Eclipse   Help ->Install New Software ,   然后Add   "http://beust.com/eclipse"

 

在Eclipse中离线安装Testng

首先下载testng离线包:  http://pan.baidu.com/s/1hrEaX6k

 

1. 将解压后的文件..\eclipse-testng离线包\features\org.testng.eclipse_6.9.9.201510270734   文件夹 放到      eclipse--》features目录下

2. 将解压后的文件..\eclipse-testng离线包\plugins\org.testng.eclipse_6.9.8.201510130443  文件夹  放到                 eclipse--》plugins目录下

3. 重启eclipse

4. 验证是否安装成功,file-->new-->other-->TestNg

TestNG最简单的测试

 下面是TestNG的最简单的一个例子

复制代码
package TankLearn2.Learn;import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.testng.annotations.Test;public class TestNGLearn1 {@BeforeClasspublic void beforeClass() {System.out.println("this is before class");}@Testpublic void TestNgLearn() {System.out.println("this is TestNG test case");}@AfterClasspublic void afterClass() {System.out.println("this is after class");}
}
复制代码

 

TestNG的基本注解

 

注解描述
@BeforeSuite注解的方法将只运行一次,运行所有测试前此套件中。
@AfterSuite注解的方法将只运行一次此套件中的所有测试都运行之后。
@BeforeClass注解的方法将只运行一次先行先试在当前类中的方法调用。
@AfterClass注解的方法将只运行一次后已经运行在当前类中的所有测试方法。
@BeforeTest注解的方法将被运行之前的任何测试方法属于内部类的 <test>标签的运行。
@AfterTest注解的方法将被运行后,所有的测试方法,属于内部类的<test>标签的运行。
@BeforeGroups组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod注解的方法将每个测试方法之前运行。
@AfterMethod被注释的方法将被运行后,每个测试方法。
@DataProvider
标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。
该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners定义一个测试类的监听器。
@Parameters介绍如何将参数传递给@Test方法。
@Test标记一个类或方法作为测试的一部分。

 

TestNG中如何执行测试

第一种直接执行:右键要执行的方法,  点Run As ->TestNG Test

 

使用testtng.xml 文件执行 case 

第二种:  通过testng.xml文件来执行. 把要执行的case, 放入testng.xml文件中。 右键点击testng.xml,   点Run As

testng.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test12"><classes><class name="TankLearn2.Learn.TestNGLearn1" /></classes></test>
</suite>
复制代码

 

TestNG按顺序执行Case

在testng.xml中,可以控制测试用例按顺序执行。  当preserve-order="true"是,可以保证节点下面的方法是按顺序执行的

复制代码
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test12" preserve-order="true"><classes><class name="TankLearn2.Learn.TestNGLearn1"><methods><include name="TestNgLearn3" /><include name="TestNgLearn1" /><include name="TestNgLearn2" /></methods></class></classes></test>
</suite>
复制代码

 

 

 

TestNG异常测试

测试中,有时候我们期望某些代码抛出异常。

TestNG通过@Test(expectedExceptions)  来判断期待的异常, 并且判断Error Message

复制代码
package TankLearn2.Learn;import org.testng.annotations.Test;public class ExceptionTest {@Test(expectedExceptions = IllegalArgumentException.class, expectedExceptionsMessageRegExp="NullPoint")public void testException(){throw new IllegalArgumentException("NullPoint");}
}
复制代码

 

TestNG组测试

TestNG中可以把测试用例分组,这样可以按组来执行测试用例比如:

复制代码
package TankLearn2.Learn;import org.testng.annotations.Test;public class GroupTest {@Test(groups = {"systemtest"})public void testLogin(){System.out.println("this is test login");}@Test(groups = {"functiontest"})public void testOpenPage(){System.out.println("this is test Open Page");}
}
复制代码

 

然后在testng.xml中 按组执行测试用例

复制代码
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test1"><groups><run><include name="functiontest" /></run></groups></test>
</suite>
复制代码

 

TestNG参数化测试

软件测试中,经常需要测试大量的数据集。 测试代码的逻辑完全一样,只是测试的参数不一样。  这样我们就需要一种 “传递测试参数的机制”。 避免写重复的测试代码

TestNG提供了2种传递参数的方式。

第一种: testng.xml 方式使代码和测试数据分离,方便维护

第二种:@DataProvider能够提供比较复杂的参数。 (也叫data-driven testing)

 

方法一: 通过testng.xml 传递参数给测试代码

复制代码
package TankLearn2.Learn;import org.testng.annotations.Parameters;
import org.testng.annotations.Test;public class ParameterizedTest1 {@Test@Parameters("test1")public void ParaTest(String test1){System.out.println("This is " + test1);}
}
复制代码

testng.xml

复制代码
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><parameter name="test1" value="Tank" /><parameter name="test1" value="Xiao" /><test name="test12"><classes><class name="TankLearn2.Learn.ParameterizedTest1" /></classes></test>
</suite>
复制代码

 

方式二:   通过DataProvider传递参数

复制代码
package TankLearn2.Learn;import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;public class DataProviderLearn {@DataProvider(name="user")public Object[][] Users(){return new Object[][]{{"root","passowrd"},{"cnblogs.com", "tankxiao"},{"tank","xiao"}};}@Test(dataProvider="user")public void verifyUser(String userName, String password){System.out.println("Username: "+ userName + " Password: "+ password);}
}
复制代码

 

TestNG忽略测试

有时候测试用例还没准备好, 可以给测试用例加上@Test(enable = false),  来禁用此测试用例

复制代码
package TankLearn2.Learn;import org.testng.annotations.Test;public class TesgNGIgnore {@Test(enabled = false)public void testIgnore(){System.out.println("This test case will ignore");}
}
复制代码

 

TestNG 依赖测试

有时候,我们需要按顺序来调用测试用例,  那么测试用例之间就存在依赖关系。 TestNG支持测试用例之间的依赖

复制代码
package TankLearn2.Learn;import org.testng.annotations.Test;public class DependsTest {@Testpublic void setupEnv(){System.out.println("this is setup Env");}@Test(dependsOnMethods = {"setupEnv"})public void testMessage(){System.out.println("this is test message");}
}
复制代码

 

TestNG测试结果报告

测试报告是测试非常重要的部分.  

TestNG默认情况下,会生产两种类型的测试报告HTML的和XML的。 测试报告位于 "test-output" 目录下.

 

当然我们也可以设置测试报告的内容级别. 

verbose="2" 标识的就是记录的日志级别,共有0-10的级别,其中0表示无,10表示最详细

复制代码
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1"><test name="test12" verbose="2"><classes><class name="TankLearn2.Learn.TestNGLearn1" /></classes></test>
</suite>
复制代码

 

 

这篇关于TestNG 入门教程的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1142371

相关文章

Weex入门教程之4,获取当前全局环境变量和配置信息(屏幕高度、宽度等)

$getConfig() 获取当前全局环境变量和配置信息。 Returns: config (object): 配置对象;bundleUrl (string): bundle 的 url;debug (boolean): 是否是调试模式;env (object): 环境对象; weexVersion (string): Weex sdk 版本;appName (string): 应用名字;

Weex入门教程之3,使用 Vue 开发 Weex 页面

环境安装 在这里简略地介绍下,详细看官方教程 Node.js 环境 Node.js官网 通常,安装了 Node.js 环境,npm 包管理工具也随之安装了。因此,直接使用 npm 来安装 weex-toolkit。 npm 是一个 JavaScript 包管理工具,它可以让开发者轻松共享和重用代码。Weex 很多依赖来自社区,同样,Weex 也将很多工具发布到社区方便开发者使用。

Weex入门教程之2,Android Studio安装Weex插件

插件位置及描述 https://plugins.jetbrains.com/idea/plugin/8460-weex 貌似对windows还不是很支持,先放着吧。 安装 插件功能 先预览下都有什么功能 安装完成Weex插件后,如果在main toolbar找不到这些功能图标,那么就需要手动添加到main toolbar 添加到main toolbar 红框内就是

Weex入门教程之1,了解Weex

【资料合集】Weex Conf回顾集锦:讲义PDF+活动视频! PDF分享:链接:http://pan.baidu.com/s/1hr8RniG 密码:fa3j 官方教程:https://weex-project.io/cn/v-0.10/guide/index.html 用意 主要是介绍Weex,并未涉及开发方面,好让我们开始开发之前充分地了解Weex到底是个什么。 以下描述主要摘取于

Python简单入门教程helloworld

Python 学习资源 推荐书籍: Python核心编程(第二版) (强烈推荐,建议有一定基础的看,或者看完简明Python教程再看) Python 基础教程 第二版 (入门,没有核心编程好,但也不错) 编写高质量代码:改善Python程序的91个建议 (进阶,有一定基础再看) 书籍下载: Python 教程(部分内容来源于网络, 历时一年多总结整理的,给刚刚入门的

【超级干货】2天速成PyTorch深度学习入门教程,缓解研究生焦虑

3、cnn基础 卷积神经网络 输入层 —输入图片矩阵 输入层一般是 RGB 图像或单通道的灰度图像,图片像素值在[0,255],可以用矩阵表示图片 卷积层 —特征提取 人通过特征进行图像识别,根据左图直的笔画判断X,右图曲的笔画判断圆 卷积操作 激活层 —加强特征 池化层 —压缩数据 全连接层 —进行分类 输出层 —输出分类概率 4、基于LeNet

【2024最新】Python入门教程(非常详细)从零基础入门到精通,看完这一篇就够了!

前言 本文罗列了了python零基础入门到精通的详细教程,内容均以知识目录的形式展开。 第一章:python基础之markdown Typora软件下载Typora基本使用Typora补充说明编程与编程语言计算机的本质计算机五大组成部分计算机三大核心硬件操作系统 第二章:编程语言的发展史和第一个Python程序 文件的概念计算机内部数据原理编程语言发展史编程语言的分类python解释器版

Weex入门教程之,关注weex-toolkit命令变更

由于weex的版本处于快速迭代中,我们需要时刻关注其变动,因为weex可能修复了某些bug或新增了一些功能。 关注链接:  原码链接:https://github.com/weexteam/weex-toolkit  发布链接:https://www.npmjs.com/package/weex-toolkit 或者使用帮助命令查看 Microsoft Windows [版本 10.0.10

神仙级AI大模型入门教程(非常详细),从零基础入门到精通,从看这篇开始!

一.初聊大模型 1.为什么要学习大模型? 在学习大模型之前,你不必担心自己缺乏相关知识或认为这太难。我坚信,只要你有学习的意愿并付出努力,你就能够掌握大模型,并能够用它们完成许多有意义的事情。在这个快速变化的时代,虽然新技术和概念不断涌现,但希望你能静下心来,踏实地学习。一旦你精通了某项技术,你就能够用它来实现自己的目标,甚至可能找到理想的工作或完成具有挑战性的项目。 在众多的技术中,大模型

简洁直白的github快速入门教程(云主机)

如果你不是云主机,也可以使用本地的linux,这里不提供windows的解决方案! 1. 在云主机上安装 Git 首先,确保你的云主机上安装了 Git。你可以使用以下命令来安装它: # 对于 Debian/Ubuntu 系统sudo apt-get updatesudo apt-get install git# 对于 CentOS/RHEL 系统sudo yum install git