当前位置: 首页 > news >正文

接口自动化入门-TestNg

目录

  • 1.TestNg介绍
  • 2、TestNG安装
  • 3、TestNG使用
    • 3.1 编写测试用例脚本
    • 3.2 创建TestNG.xml文件
      • (1)创建testng.xml文件
      • (2)修改testng.xml
  • 4、测试报告生成

1.TestNg介绍

TestNg是Java中开源的自动化测试框架,灵感来源于Junit和NUnit。引入Java的注解便于编写和管理测试类和方法

2、TestNG安装

(1)JDK
(2)Intelli IDEA
(3)在IDEA中安装TestNg插件
在这里插入图片描述
(4)如果是Maven项目,还需要在pom.xml中添加依赖和插件

<dependencies><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>6.10</version><scope>test</scope></dependency>
</dependencies><!-- testng.xml所在的路径,这里指的是相对路径 -->
<plugin><artifactId>maven-surefire-plugin</artifactId><configuration><suiteXmlFiles><suiteXmlFile>testng.xml</suiteXmlFile></suiteXmlFiles></configuration><version>2.22.1</version>
</plugin>

3、TestNG使用

3.1 编写测试用例脚本

(1)新建测试用例类
(2)使用注解

  • @Test注解:使用改注解的方法或类可以被testNG识别并运行
 @Test(dependsonMethods="test2"):依赖其他方法,运行当前方法之前需要先执行test2@Test(alwayRun=true):设置为true时,无论什么情况都会运行@Test(description="xxx"):对用例进行说明@Test(enabled=false):设置为false时,表示改方法失效
@Test(dataProvider="datas"):设置数据提供者的名称
  • Before/After注解
针对当前项目:
@BeforeSuite:带有该注释的方法将在该套件中的所有测试方法运行之前运行,仅运行一次。
@AfterSuite:带有该注释的方法将在该套件中的所有测试方法运行之后运行,仅运行一次。
@BeforeTest:带有该注释的方法将在运行属于标签<test>内的类的所有测试方法之前执行
@AfterTest:带有该注释的方法将在运行属于标签<test>内的类的所有测试方法之后执行
针对当前类:
@BeforeClass:带有该注释的方法将在调用当前类的第一个测试方法之前执行
@AfterClass:带有该注释的方法将在调用当前类的第一个测试方法之后执行
@BeforMethod:带有该注释的方法将在每个测试方法之前运行
@AfterMethod:带有该注释的方法将在每个测试方法之后运行
@BeforeGroups:此方法保证在调用属于这些组中的任何一个的第一个测试方法之前不久运行。
@AfterGroups:该方法保证在调用属于任何这些组的最后一个测试方法之后不久运行。
  • 传递参数
    (1)@Parameters
@Parameters({"first","last"}):描述如何将参数传递给@Test方法。需要预先在testng.xml中使用<parameter>标签传入参数名和参数值
<parameter name="first" value="尼古拉斯"/>

(2)@DataProvider:可以传递更多的参数,不需要在xml中写,直接在方法上加注解就可以用
参考:版权声明:本文为CSDN博主「wangjie0925」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
(1)注释方法返回一个Object[][]:明确知道有几组数据
其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称。


@DataProvider(name="loginData")private Object[][] LoginDataProvider() throws IOException {Object[][] result=null;SqlSession session=DatabaseUtil.getSqlSession();result=new Object[][]{{session.selectOne("loginTest",1)},{session.selectOne("loginTest",2)}};return  result;
}

(2)返回类型是Iterator<Object[]>,不管有多少组测试数据,都可以返回,使用迭代器时,test所在方法的参数类型必须与迭代器中的类型一致

@DataProvider(name="loginData")
private Iterator<Object[]> LoginDataProvider() throws IOException {List<Object[]> result=new ArrayList<Object[]>();SqlSession session=DatabaseUtil.getSqlSession();List<Object> alldata=session.selectList("loginTestAll");Iterator it=alldata.iterator();while(it.hasNext()){result.add(new Object[] { it.next() });}return  result.iterator();}

在这里插入图片描述

(3)重要方法:

  • Assert.assertEquals(actual,Expected):断言,进行实际和预期值的比较

3.2 创建TestNG.xml文件

运行TestNG测试脚本需要配置一个xml文件,使用xml配置文件进行测试用例脚本的执行和管理,在xml配置文件里,不仅可以选择某些需要执行的测试脚本,还可以排除某些不需要运行的测试脚本。

(1)创建testng.xml文件

在这里插入图片描述

(2)修改testng.xml

参考:Java+Maven+TestNG - 创建项目篇
编写了测试用例脚本后,就可以修改testng.xml文件了。基本格式如下:

  • 每一个xml文件只能有一个suite根标签,代表的是一个测试集(项目);
  • 一个suite中可以包含多个test(模块),多个test会按照顺序执行;
  • 每一个test里边可以写需要运行的测试用例的class(模块下的测试类)。如果不写,默认会跑所有的测试用例;
  • 每个class可以指定要执行哪些用例,不执行哪些用例。如果不写method,则默认本类里的全部用例都执行。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="测试testng"><test verbose="2" preserve-order="true" name="G:/Pj/OJOnline/maven-oj"><classes><class name="problem.ProblemDAOTest"><methods><include name="selectAllCase"/><include name="selectOneCase"/></methods></class></classes></test><listeners><listener class-name="org.uncommons.reportng.HTMLReporter"/><listener class-name="org.uncommons.reportng.JUnitXMLReporter"/></listeners>
</suite>

4、测试报告生成

(1)默认的测试报告
执行testng.xml后(maven项目可以使用mvn test命令),在target目录下会生成surefire-reports文件夹,运行index.html文件可以查看报告
在这里插入图片描述
在这里插入图片描述

(2)ReportNG
在testng.xml中配置监听

<listeners><listener class-name="org.uncommons.reportng.HTMLReporter"/><listener class-name="org.uncommons.reportng.JUnitXMLReporter"/></listeners>

在这里插入图片描述
在pom.xml文件中添加ReportNG的依赖:

<!-- https://mvnrepository.com/artifact/org.uncommons/reportng --><dependency><groupId>org.uncommons</groupId><artifactId>reportng</artifactId><version>1.1.4</version><scope>test</scope><exclusions><exclusion><groupId>org.testng</groupId><artifactId>testng</artifactId></exclusion></exclusions></dependency><!-- https://mvnrepository.com/artifact/com.google.inject/guice --><dependency><groupId>com.google.inject</groupId><artifactId>guice</artifactId><version>4.2.0</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/velocity/velocity-dep --><dependency><groupId>velocity</groupId><artifactId>velocity-dep</artifactId><version>1.4</version></dependency><!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --><dependency><groupId>com.google.code.gson</groupId><artifactId>gson</artifactId><version>2.8.0</version></dependency><!-- https://mvnrepository.com/artifact/org.uncommons/reportng --><dependency><groupId>org.uncommons</groupId><artifactId>reportng</artifactId><version>1.1.4</version><scope>test</scope><exclusions><exclusion><groupId>org.testng</groupId><artifactId>testng</artifactId></exclusion></exclusions></dependency><!-- https://mvnrepository.com/artifact/com.google.inject/guice --><dependency><groupId>com.google.inject</groupId><artifactId>guice</artifactId><version>4.2.0</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/velocity/velocity-dep --><dependency><groupId>velocity</groupId><artifactId>velocity-dep</artifactId><version>1.4</version></dependency>

在编辑配置中,取消Listerners中的Use default reports选项
在这里插入图片描述
执行testng.xml文件或mvn test,可以看到测试报告在test-output文件夹下
在这里插入图片描述
在这里插入图片描述

参考:Java自动化测试之TestNG生成测试报告

http://www.lryc.cn/news/30890.html

相关文章:

  • Spring AOP —— 详解、实现原理、简单demo
  • (蓝桥真题)异或数列(博弈)
  • 4万字数字政府建设总体规划方案WORD
  • CCF/CSP 201709-2公共钥匙盒100分
  • 【OC】Blocks模式
  • 软件设计师教程(七)计算机系统知识-操作系统知识
  • 蓝桥杯2023/3/2
  • 【IoT】创业成功不可或缺的两个因素:能力和趋势
  • 2020蓝桥杯真题日期格式 C语言/C++
  • 总时差与自由时差
  • LeetCode两个数组的交集-跳跃游戏- 最长有效括号
  • mysql普通索引与唯一索引怎么选择
  • JavaWeb开发(三)3.5——Java的反射机制
  • Python每日一练(20230305)
  • SpringBoot三种方法实现定时发送邮件的案例
  • opengl、opengl es、webgl介绍与opengl开发入门
  • Vue3之组件间传值
  • Windows10下使用CMake编译ITK5.2.1步骤
  • 字符串模式匹配,经典KMP算法你还不会?我可不允许你不会!
  • C++操作redis(实现连接池、分布式锁)
  • 硬件基础专题-01电阻篇
  • 【JAVA程序设计】(C00112)基于Springboot+Thymeleaf的在线购物商城——有文档
  • shell基础(5)算数计算:运算语法、自增自减
  • virtio设备input节点
  • 《计算机网络:自顶向下方法》学习笔记——第一章:计算机网络和因特网
  • PDF 解析格式化输出 API 数据接口
  • RL笔记:基于策略迭代求CliffWaking-v0最优解(python实现)
  • 350. 两个数组的交集 II
  • Android仿微信选择图片
  • python+嵌入式——串口通信篇(收发解包)