Testng学习笔记

2023-11-15

TestNG设计涵盖所有类型的测试:单元,功能,端到端,集成等,它需要JDK5或更高的JDK版本。
TestNG是一个开源自动化测试框架;其灵感来自JUnit和NUnit的

TestNG环境设置(配置安装)TestNG是一个Java的框架,所以第一个要求是JDK要安装在你的机器上。 系统要求 JDK 1.5或以上 内存 没有最低要求 磁盘空间 没有最低要求 操作系统 没有最低要求 步骤1 -验证Java安装在你的 - 易百教程https://www.yiibai.com/html/testng/2013/0914293.html

Testng安装

1、安装配置java环境。

2、下载TestNG中-6.8.jar

3、设置环境变量。

jar包地址

并在ClassPath中添加 ;%TESTNG_HOME%\testng-6.8.jar;

测试testng配置

创建一个Java类文件名TestNGSimpleTest  

   
import org.testng.annotations.Test;
import static org.testng.Assert.assertEquals;

public class TestNGSimpleTest {
	@Test
	public void testAdd() {
		String str = "TestNG is working fine";
		assertEquals("TestNG is working fine", str);
	}
}

创建一个XML文件名称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">
    <classes>
       <class name="TestNGSimpleTest"/>
    </classes>
  </test>
</suite>	

类编译使用javac编译如下:

C:\TestNG_WORKSPACE>javac TestNGSimpleTest.java

执行testng.xml

java org.testng.TestNG testng.xml

在testng.xml文件中写要执行的单元测试类名。

testng注释

注解 描述
@BeforeSuite 注解的方法将只运行一次,运行在一个suite的所有测试用例之前。
@AfterSuite 注解的方法将只运行一次,运行在一个suite的所有测试用例之后
@BeforeClass 运行在一个类前
@AfterClass 运行在一个类后
@BeforeTest 在一个test标签内之前运行。(在class注释之前运行)
@AfterTest 在一个test标签内之后运行。
@BeforeGroups 组的列表,这种配置方法将之前运行。此方法是保证在运行属于任何这些组第一个测试方法,该方法被调用。
@AfterGroups 组的名单,这种配置方法后,将运行。此方法是保证运行后不久,最后的测试方法,该方法属于任何这些组被调用。
@BeforeMethod 在每个测试方法之前运行
@AfterMethod 在每个测试方法之后运行
@DataProvider

标志着一个方法,提供数据的一个测试方法。注解的方法必须返回一个Object[] [],其中每个对象[]的测试方法的参数列表中可以分配。

该@Test 方法,希望从这个DataProvider的接收数据,需要使用一个dataProvider名称等于这个注解的名字。
@Factory 作为一个工厂,返回TestNG的测试类的对象将被用于标记的方法。该方法必须返回Object[]。
@Listeners 定义一个测试类的监听器。
@Parameters 介绍如何将参数传递给@Test方法。
@Test 标记一个类或方法作为测试的一部分。

 执行单元测试类

创建一个类
创建一个Java类进行测试为 MessageUtil.java 在 C:\ > TestNG_WORKSPACE

/*
* This class prints the given message on console.
*/
public class MessageUtil {

   private String message;

   //Constructor
   //@param message to be printed
   public MessageUtil(String message){
      this.message = message;
   }
      
   // prints the message
   public String printMessage(){
      System.out.println(message);
      return message;
   }   
}  
创建测试例类
创建一个Java测试类 SampleTest.java

您的测试类添加一个的测试方法testPrintMessage()

添加注释@Test 到方法  testPrintMessage()

实现测试条件和使用的assertEquals API TestNG的检查条件

创建一个Java类文件名 SampleTest.java在 C:\ > TestNG_WORKSPACE

import org.testng.Assert;
import org.testng.annotations.Test;

public class SampleTest {
	
   String message = "Hello World";
   MessageUtil messageUtil = new MessageUtil(message);

   @Test
   public void testPrintMessage() {
        Assert.assertEquals(message, messageUtil.printMessage());
   }
}
创建 testng.xml
接下来,让我们创建testng.xml文件在 C:\ > TestNG_WORKSPACE 执行测试用例,此文件捕获整个测试XML。这个文件可以很容易地描述所有的测试套件和它们的参数在一个文件中,你可以检查你的代码库或e-mail给同事。这也使得它容易提取测试或分裂的几个运行时配置的子集(例如,TestNG的database.xml 只能运行测试,行使数据库)。

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Sample test Suite">
   <test name="Sample test">
    <classes>
      <class name="SampleTest" />
    </classes>
  </test>
</suite>	
情况下使用javac编译测试

C:\TestNG_WORKSPACE>javac MessageUtil.java SampleTest.java 
现在,运行这个 testng.xml,将运行中定义的测试用例 <test> 标签

C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" org.testng.TestNG testng.xml
验证输出。

Hello World

===============================================
Sample test Suite
Total tests run: 1, Failures: 0, Skips: 0
===============================================

忽略方法 

测试方法是标注了@Test(enabled = false),在测试执行时忽略。

组测试

  • 组的测试方法两个用处为:

    • 检入登记测试(checkintest):提交新的代码之前,你应该运行这些测试。他们通常应快,只要确保没有被打破的基本功能。

    • 功能测试(functest):这些测试应该涵盖软件的所有功能,每天至少运行一次,虽然理想情况下,会希望他们不断运行。

创建一个Java类进行测试为 MessageUtil.java 在 C:\ > TestNG_WORKSPACE

/*
* This class prints the given message on console.
*/
public class MessageUtil {
    private String message;

    // Constructor
    // @param message to be printed
    public MessageUtil(String message) {
        this.message = message;
    }

    // prints the message
    public String printMessage() {
        System.out.println(message);
	return message;
    }

    // add "tutorialspoint" to the message
    public String salutationMessage() {
        message = "tutorialspoint" + message;
	System.out.println(message);
	return message;
    }

    // add "www." to the message
    public String exitMessage() {
	message = "www." + message;
	System.out.println(message);
	return message;
    }
}

创建Java类文件名 GroupTestExample.java 在 C:\ > TestNG_WORKSPACE

import org.testng.Assert;
import org.testng.annotations.Test;

public class GroupTestExample {
    String message = ".com";
    MessageUtil messageUtil = new MessageUtil(message);

    @Test(groups = { "functest", "checkintest" })
    public void testPrintMessage() {
        System.out.println("Inside testPrintMessage()");
	message = ".com";
	Assert.assertEquals(message, messageUtil.printMessage());
    }

    @Test(groups = { "checkintest" })
    public void testSalutationMessage() {
        System.out.println("Inside testSalutationMessage()");
	message = "tutorialspoint" + ".com";
	Assert.assertEquals(message, messageUtil.salutationMessage());
    }

    @Test(groups = { "functest" })
    public void testingExitMessage() {
        System.out.println("Inside testExitMessage()");
        message = "www." + "tutorialspoint"+".com";
	Assert.assertEquals(message, messageUtil.exitMessage());
    }
}

创建一个文件 testng.xml C:\ > TestNG_WORKSPACE 来执行测试用例,在这里,我们将只执行这些测试,属于组functest。

<?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="functest" />
	    </run>
	</groups>
	<classes>
	    <class name="GroupTestExample" />
	</classes>
    </test>
</suite>

组中组

组也可以包含其他组。这些组称为MetaGroups。例如,您可能希望定义一个组中的所有,包括checkintest和functest。让我们修改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>
         <define name="all">
	    <include name="functest"/>
	    <include name="checkintest"/>
	 </define>
	 <run>
	    <include name="all"/>
	 </run>
   	 </groups>
	 <classes>
	      <class name="GroupTestExample" />
	</classes>
   </test>
</suite>

这里是定义了functest和checkintest都属于all,如果不定义,run里只包括all,是不执行任何用力的。

排斥组

可以忽略一个组使用<exclude>标签,如下图所示:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
   <test name="test1">
      <groups>
         <define name="all">
	    <exclude name="functest"/>
	    <include name="checkintest"/>
	 </define>
	 <run>
	    <include name="all"/>
	 </run>
   	 </groups>
	 <classes>
	      <class name="GroupTestExample" />
	</classes>
   </test>
</suite>

TestNG异常测试

TestNG跟踪异常处理代码提供了一个选项。可以测试是否需要代码抛出异常或不抛出。 @Test注释expectedExceptions 参数一起使用。

TestNG依赖测试

TestNG允许指定依赖,无论与否:

  • 使用属性dependsOnMethods在 @Test 注释OR

  • 使用属性dependsOnGroups在@Test注解。

TestNG参数化测试

方法一:添加注释 @Parameters("myName")

方法二:@DataProvider

TestNG运行JUnit测试

TestNG可以兼容运行JUnit

TestNG测试结果报告

TestNG默认情况下,会产生不同类型的测试执行报告。这包括HTMLXML报表输出。 TestNG的还允许用户自己写的报告,并用它使用TestNG。还有一个选项来写你自己的记录器,在运行时通过TestNG的通知。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Testng学习笔记 的相关文章

  • 白盒测试(单元测试JUnit使用参数化测试@Parameters)

    目录 1 背景知识 2 例子 3 参数化流程 4 执行结果 5 练习题 1 背景知识 在测试过程中 我们可能会遇到这样的函数 它的参数有许多特殊值
  • python-测试代码

    目录 介绍 测试函数 单元测试和测试用例 可通过的测试 不能通过的测试 测试未通过时怎么办 添加新测试 测试类 各种断言方法 一个要测试的类 测试AnonymousSurvey类 方法setUp 介绍 在本章中你会学习如何使用Python模
  • 软件工程基础知识--系统测试

    系统测试与调试 1 系统测试的意义和目的 系统测试是为了发现错误而执行程序的过程 以最少的人力和时间发现潜在的各种错误和缺陷 根据测试的概念和目的 在进行信息系统测试时应遵循以下基本原则 1 应尽早并不断地进行测试 2 测试工作应该避免由原
  • 代码检查、评审、单元测试工具 大搜集

    看书真是迅速进入一个陌生领域的最快办法 系统的 体系完整的知识比起在互联网上七拼八凑出的认识强太多了 先记下一些理论概念 软件生命周期模型 分析 设计与文档 编码与审查 测试与调试 发布与维护 软件测试对象的6种分类 单元测试 静态检查 动
  • 软件外包开发的测试用例

    软件测试用例是一组详细的步骤 输入数据 预期结果和实际结果 用于验证软件是否满足特定需求或功能 编写测试用例的目的是确保软件的质量和性能 今天和大家分享编写软件测试用例的一般步骤 希望对大家有所帮助 北京木奇移动技术有限公司 专业的软件外包
  • 测试设计提升之路

    当前软件行业中有很多职位 其中开发与测试可以说是TOP2热门 测试相对开发来说入门容易 但要快速达到巅峰 我们需要掌握一些方法与套路 测试工作是一个繁琐的工作 一个人的精气神有限 在规定的时间内需要掌握多种技术 而且要达到精通非常困难 就测
  • 软件测试,银行测试到底能不能长期做下去?老鸟解析

    银行测试是一个相对稳定的领域 因为银行作为金融机构必须遵守法律法规 要求其业务的安全性 可靠性和稳定性等方面都需要不断地测试和验证 因此从长远来看 银行测试有着相对较好的就业前景 当然 随着技术的发展和变化 测试岗位也在不断地更新和升级 更
  • 【性能测试】混合业务场景按比例设计

    已知从生产环境中统计出的接口比例如下所示 接口 接口比例 接口1 40 接口2 20 接口3 30 接口4 10 场景一 以上接口无上下依赖关系 设计出容量场景 接口1比例如下 接口2比例如下
  • 无惧代码错误,从unittest开始的单元测试之旅!

    前言 单元测试 Unit Testing 是根据特定的输入数据 针对 程序模块 输出的正确性进行验证的工作 这些程序模块包括 单个程序 函数 类 我们在实现一个程序时不能仅仅实现功能方面的端到端调试 仅仅是能够从数据输入到数据输出能够实现贯
  • 测试用例设计方法六脉神剑——第一剑:入门试招,等价边界初探

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读1 8k次 点赞82次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 常见的6种软件测试用例设计方法

    常见的软件测试用例设计方法 个人认为主要是下面这6种 流程图法 也叫场景法 等价类划分法 边界值分析 判定表 正交法 错误推测法 这6种常见方法中 我分别按照定义 应用场景 使用步骤 案例讲解这4个部分进行讲解 所以本文行文结构如下 每种用
  • Jmeter吞吐量控制器使用小结

    吞吐量控制器 Throughput Controller 场景 在同一个线程组里 有10个并发 7个做A业务 3个做B业务 要模拟这种场景 可以通过吞吐量 模拟器 来实现 添加吞吐量控制器 用法1 Percent Executions 在一
  • 广州软件第三方测试报告需要盖CNAS\CMA吗?怎么取费?

    CNAS CMA资质 1 CMA资质标识 根据报告接收方要求 第三方测试报告上是否加盖CMA标识 第三方测试机构执行标准为GB T25000 51和GB T25000 10标准 2 CNAS标识 ILAC MRA国际互认标识 通常第三方测试
  • 广州软件第三方测试报告需要盖CNAS\CMA吗?怎么取费?

    CNAS CMA资质 1 CMA资质标识 根据报告接收方要求 第三方测试报告上是否加盖CMA标识 第三方测试机构执行标准为GB T25000 51和GB T25000 10标准 2 CNAS标识 ILAC MRA国际互认标识 通常第三方测试
  • unittest自动化测试断言方法的介绍

    断言如同在测试用例上 类似于预期结果与实际结果是否一致 如果一致则表示测试通过 Assert断言 很好的用于测试结果判断上 更灵活的对预期结果和实际结果进行对比 下面简单的介绍一下unittest的Assert断言 unittest中基础的
  • 软件测试/测试开发全日制培训班|测试管理圆桌讨论会精彩时刻回顾(上)

    很高兴大家来参加测试管理圆桌讨论会 本次我们邀请了4位嘉宾 他们的工作履历几乎涵盖了目前互联网行业的头部公司 嘉宾介绍 Angelia 资深的项目经理 多次搭建研发团队 目前在外企做 PMO成员 强哥 曾在阿里担任测试负责人 负责过很多大型
  • JMeter使用BeanShell断言

    BeanShell简介 BeanShell 是使用Java语法的一套脚本语言 在JMeter的多种组件中都有BeanShell的身影 如 定时器 BeanShell Timer 前置处理器 BeanShell PreProcessor 采样
  • 基于Python + Requests 的Web接口自动化测试框架

    之前采用JMeter进行接口测试 每次给带新人进行培训比较麻烦 干脆用Python实现 将代码和用例分离 易于维护 项目背景 公司的软件采用B S架构 进行数据存储 分析 管理 工具选择 python开发的速度很快 且容易上手 丰富的第三方
  • 测开和测试平台是否有存在的必要?

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 3k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 程序员找工作难!拿到外包公司的 offer 我应该去么?

    引言 前一阵子有一个帖子引起了非常广泛的讨论 描述的就是一个公司的外包工作人员 加班的时候因为吃了公司给员工准备的零食 被公司的HR当场批评 这个帖子一发出来 让现在测试行业日益新增的外包公司备受关注 那么外包公司和非外包公司有什么样的不一

随机推荐

  • expected type: java.lang.String, actual value: $Proxy26

    这个错误是在什么情况下报出的 sqlsever ssh的 时候 使用的是非持久化的查询 因为是多服务器查询 query getSession createSQLQuery sql setResultTransformer Transform
  • 2023-9-14 最长上升子序列

    题目链接 最长上升子序列 include
  • C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化 将object对象序列化常见的两种方式即string和xml对象 第一种将object转换为string对象 这种比较简单没有什么可谈的 public string
  • Eclipse-修改工程名

    直接修改工程可能会产生一些莫名其妙的问题 需遵循以下四步 1 右键工程 Refactor gt Rename 或选中工程按F2 修改名称 2 右键工程 Properties gt Web Project Settings 修改Context
  • 性能测试的方法

    性能测试主要采用的方法有 1 负载测试 通过对系统不断的加压 直到超过预定的指标或者部分资源达到一种饱和状态不能再加压为止 该方法主要用于找到系统最大的负载能力 为性能调优提供数据 2 压力测试 指系统已经达到一定的饱和程度 CPU 磁盘等
  • Django2.0-redis

    redis 概述 redis是一种nosql数据库 他的数据是保存在内存中 同时redis可以定时把内存数据同步到磁盘 即可以将数据持久化 并且他比memcached支持更多的数据结构 string list列表 队列和栈 set 集合 s
  • LRU和LFU的区别

    分析 回答 LRU和LFU都是内存管理的页面置换算法 LRU 即 最近最少使用淘汰算法 Least Recently Used LRU是淘汰最长时间没有被使用的页面 LRU关键是看数据最后一次被使用到发生替换的时间长短 时间越长 数据就会被
  • 都在用 AI 生成美少女,而我却。。。

    最近 AI 画画特别的火 你能从网上看到非常多好看的图片 于是我就开始了我的安装之旅 我看到的图是这样的 这样的 还有这样的 然后我就开始了我的 AI 安装生成计划 安装环境 首先我们需要安装 Python 环境 因为这个需要显卡 我估计我
  • [C++]for 循环多个限制条件

    for int i 0 j 0 i lt 5 j lt 7 i j 那么最后判断的会是j lt 7的条件 应该写成 for int i 0 j 0 i lt 5 j lt 7 i j 转载于 https www cnblogs com dr
  • django celery简单 例子

    django celery简单 例子 https docs celeryq dev en latest django first steps with django html pip list pip install Django4 2 3
  • Oracle的基本数据类型总结

    1 字符类型 CHAR 一个定长字符串 当位数不足自动用空格填充来达到其最大长度 如非NULL的CHAR 12 总是包含12字节信息 CHAR字段最多可以存储2 000字节的信息 VARCHAR2 这是一个变长字符串 与CHAR 类型不同
  • JavaScript WebGL 三维相关概念

    引子 在 JavaScript WebGL 矩阵之后 发现在实现三维效果之前还有一些概念需要理解 就去查了下资料 按照自己的习惯整合了一下 Origin My GitHub 齐次坐标 三维坐标理论上三个分量就够了 但在看相关程序的时候 发现
  • linux spi 设备节点 读写

    本文记录spi设备节点的操作方法 SPI总线设备文件名通常为 dev spidevN P N 0 1 2 P 0 1 2 其中N表示第几路SPI总线 而P表示在该路SPI总线中使用哪个CS信号线 参考链接 http www wzaobao
  • 【深度解析→博文总结】李宏毅机器学习2023作业04Self-attention(Speaker Identification)

    文章目录 系列文章 简要说明 视频分享 作业详情 调参记录 Simple Baseline 0 66025 Medium Baseline 0 81750 Stong Baseline 0 88500 Boss Baseline 0 931
  • uni-app项目中实现录音管理器(recorderManager)

    项目场景 通过微信小程序进行录音上传到服务器端进行分析诊断 得出设备发生故障的原因 问题描述 使用uni app实现声音的采集以及回放和上传等功能 并且用户可以自定义录制时长 录制时长有上限和下限 效果展示 原因分析 uni app 官网中
  • 多案分库分表带来的问题-跨库关联查询

    比如查询在合同信息的时候要关联客户数据 由于是合同数据和客户数据是在不同的数据库 那么我们肯定不能直接使用join 的这种方式去做关联查询 我们有几种主要的解决方案 1 字段冗余 比如我们查询合同库的合同表的时候需要关联客户库的客户表 我们
  • MPQ8633性能指标测试与调测分享

    目录 基于MPQ8633A测试分析 1 开关电源的三种基本拓扑结构 1 1 buck电路的基本拓扑以及原理 2 CCM DCM BCM 概论 2 1 PWM PFM PSM三种控制方法的优缺点 2 2 DCDC BUCK各种模式 2 3 C
  • 使用easypoi模板方法导出excel

    系列文章目录 一 Java使用Apache POI导出excel 二 Apache POI 操作Excel常用方法 三 Apache poi 拆分单元格并赋值 四 使用easypoi模板方法导出excel 五 Apache poi给exce
  • Dynamics 365 多选字段

    Dynamics 365 多选字段 数据库操作 C 后台操作 JS 扩展 JS string 转 int数组 数据库操作 update tablebase set field 1 对应选项值多个逗号隔开 1 C 后台操作
  • Testng学习笔记

    TestNG设计涵盖所有类型的测试 单元 功能 端到端 集成等 它需要JDK5或更高的JDK版本 TestNG是一个开源自动化测试框架 其灵感来自JUnit和NUnit的 TestNG环境设置 配置安装 TestNG是一个Java的框架 所