testng测试类

第一步:在测试类中写业务逻辑测试代码+在测试类中插入testng相关注解

数据驱动给@test标记的方法提供数据

看数据驱动源码

在TestNG中,你可以使用@DataProvider注解来标记一个方法,该方法将提供数据给测试方法。数据提供者的名称默认为方法名。被注解的方法必须返回一个Object[][]数组,其中每个Object[]数组可以赋值给测试方法的参数列表。

如果你有一个测试方法,它需要从数据提供者那里接收数据,那么你需要使用@Test注解,并指定dataProvider属性,其值应该与数据提供者的名称相同。

下面举例讲解

import org.testng.annotations.DataProvider;  
import org.testng.annotations.Test;  public class MyTestClass {  // 数据提供者方法,返回Object[][]数组  @DataProvider(name = "testData")  public Object[][] provideTestData() {  return new Object[][] {  {"value1", 1},  {"value2", 2},  {"value3", 3}  };  }  // 测试方法,使用上面定义的数据提供者  @Test(dataProvider = "testData")  public void testMethod(String stringValue, int intValue) {  // 在这里使用传入的参数进行测试  System.out.println("String value: " + stringValue);  System.out.println("Integer value: " + intValue);  // ... 编写测试逻辑 ...  }  
}

 

在上面的例子中,provideTestData方法是一个数据提供者,它返回了一个二维数组Object[][],每个内部数组Object[]包含两个元素,分别是一个字符串和一个整数。这个数据提供者方法被标记为@DataProvider,并命名为"testData"。

然后,在testMethod测试方法中,我们使用@Test注解,并通过dataProvider属性指定了我们希望使用的数据提供者名称"testData"。这样,TestNG在运行testMethod方法时,会调用provideTestData方法,并将返回的每组数据依次传递给testMethod方法的参数。

通过这种方式,你可以为测试方法提供多组不同的数据,从而进行参数化测试。

数据驱动的返回规范 是二维数组

步骤:

1、查看list集合内容

2、因数据驱动返回规范事二维数组,格式是Object[][],所以

3、得到excel内的测试用例

调用ExcelRead获取list集合,从之前代码中复制过来,就是new ExcelRead得到,再用对象调handlerExcel方法,传入case info这个类

4、用例存储到二维数组

为什么要存到二维数组,因为数据驱动的规范

二维数组是什么

二维数组本质上是一个数组的数组,即每个元素都是一个数组的数组。在编程中,二维数组常被用于表示表格或矩阵,其中每个元素可以通过两个索引(通常是行索引和列索引)来访问。

例如,在Java中,一个二维数组可以这样声明和初始化:

 

java复制代码

int[][] array = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};

在这个例子中,array 是一个二维数组,它有3个元素,每个元素本身又是一个包含3个整数的数组。你可以通过 array[i][j] 的形式来访问二维数组中的元素,其中 i 是行索引,j 是列索引。

二维数组在很多场景中都非常有用,比如:

  • 表示棋盘的格子和状态。
  • 存储学生的成绩,其中行可以表示学生,列可以表示科目。
  • 实现矩阵运算。
  • 在科学计算中处理多维数据。

需要注意的是,二维数组在内存中是连续存储的,但其布局方式(即行优先还是列优先)可能会因编程语言和平台的不同而有所差异。在编程时,应当注意二维数组的初始化和访问方式,以避免越界错误或其他逻辑错误。

 实例化一个二维数组对象

传入2就是写死了2行,灵活运用,list.size 获取元素数量

 要遍历用例,用for循环

list.get(i),当i=0时,获取list的集合中第1行

object[i]是当i=1=0时,代表二维数组第一行,Object[]是一维数组{传入caseinfo用例}

在这段代码中,我们创建了一个二维数组 objects,其中外层数组的大小是2,内层数组则是动态分配的。接着,通过一个循环,我们遍历了列表 list 中的元素,并将每个元素(假设是 CaseInfo 类型)封装在一个新的 Object 数组中,然后将这个新数组赋值给 objects 的相应位置。

下面是代码的逐步解释:

  1. Object[][] objects = new Object[2][];
    这里声明了一个二维数组 objects,并初始化外层数组的大小为2。内层数组(即 objects[0] 和 objects[1])初始时是 null,因为二维数组的内层数组可以单独分配大小。

  2. for (int i = 0; i < 2; i++) {
    开始一个循环,循环两次,从 i = 0 到 i = 1

  3. CaseInfo caseInfo = list.get(i);
    从列表 list 中获取索引为 i 的元素,并将其赋值给 caseInfo 变量

  4. objects[i] = new Object[]{caseInfo};
    创建一个新的 Object 数组,其中包含刚刚从 list 中获取的 caseInfo 对象,然后将这个新数组赋值给 objects 的第 i 个位置。

 

优化,listsize在循环中会被算两遍,赋值即可

 


变量学习

取个数据驱动名字,test需指定数据驱动名字

 

已经建立测试类,可看结果

 二维数组里有几条数据就会运行几次


总结:

  如果传入的参数提供的是m列数据,test传入的是和它对应的数据类型

正常是参数对应,我们在之前建立了caseinfo对象,所以二维数据存放对象,入参就是1个,常规是有几个传几个


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/543212.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

淘宝扭蛋机小程序系统:电商娱乐新纪元,开启无限惊喜之旅

在移动互联网蓬勃发展的今天&#xff0c;小程序以其轻便、快捷的特性&#xff0c;成为了众多用户的新宠。淘宝作为国内电商领域的领军者&#xff0c;始终站在创新的前沿&#xff0c;不断探索和尝试新的商业模式。在这样的背景下&#xff0c;淘宝扭蛋机小程序系统应运而生&#…

JAVA-反射

JAVA-反射(reflection) 01. 一个需求引出反射 1. 问题 根据配置文件 re.properties 指定信息&#xff0c;创建Cat对象并调用方法hi re.properties: calssfullpathcom.yzjedu.Cat methodhi使用现有的技术&#xff0c;可以做到吗&#xff1f; cat类&#xff1a; package com…

网站安全监测:守护网络空间的坚实防线

随着互联网技术的飞速发展和广泛应用&#xff0c;网站已成为企业、机构和个人展示形象、提供服务、传递信息的重要平台。然而&#xff0c;与此同时&#xff0c;网站也面临着日益严重的安全威胁。黑客攻击、数据泄露、恶意软件等安全问题频发&#xff0c;给网站运营者带来了巨大…

GUROBI建模之非线性约束的处理

官方文档 目录 官方文档&#xff1a;GRBModel.AddGenConstrXxx() - Gurobi Optimization 数学规划的约束类型 基本约束(fundamental constraints)&#xff1a; 通用约束(general constraints): 1. GUROBI求解器有针对这类约束的函数&#xff0c;直接调用这类函数即可 2.…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:RichText)

富文本组件&#xff0c;解析并显示HTML格式文本。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。该组件无法根据内容自适应设置宽高属性&#xff0c;需要开发者设置显示布局。 子组件 不包含子组…

flask库

文章目录 flask库1. 基本使用2. 路由路径和路由参数3. 请求跳转和请求参数4. 模板渲染1. 模板变量2. 过滤器3. 测试器 5. 钩子函数与响应对象 flask库 flask是python编写的轻量级框架&#xff0c;提供Werkzeug&#xff08;WSGI工具集&#xff09;和jinjia2&#xff08;渲染模板…

JMH287亲测【鸣潮】一键内测风景端V1.0.2已整理并录制视频教学

资源介绍&#xff1a; 否需要虚拟机&#xff1a;否 文件大小&#xff1a;压缩包约15G 支持系统&#xff1a;win7、win10、win11 硬件需求&#xff1a;运行内存16G 4核及以上CPU独立显卡 资源截图&#xff1a; 下载地址&#xff1a; JMH287【鸣潮】一键端 [V1.0.2]

MySql入门教程--MySQL数据库基础操作

꒰˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN …

精读《精通 console.log》

1 引言 本周精读的文章是 Mastering JS console.log like a Pro&#xff0c;一起来更全面的认识 console 吧&#xff01; 2 概述 & 精读 console 的功能主要在于控制台打印&#xff0c;它可以打印任何字符、对象、甚至 DOM 元素和系统信息&#xff0c;下面一一介绍。 c…

Linux 中搭建 主从dns域名解析服务器

CSDN 成就一亿技术人&#xff01; 作者主页&#xff1a;点击&#xff01; Linux专栏&#xff1a;点击&#xff01; CSDN 成就一亿技术人&#xff01; ————前言———— 主从&#xff08;Master-Slave&#xff09;DNS架构是一种用于提高DNS系统可靠性和性能的配置方式。…

以题为例浅谈文件包含

什么叫做文件包含 文件包含函数加载的参数没有经过过滤或严格定义&#xff0c;可以被用户控制&#xff0c; 包含其他恶意文件&#xff0c;导致了执行非预期代码。 文件包含漏洞&#xff08;File Inclusion Vulnerability&#xff09;是一种常见的网络安全漏洞&#xff0c;它允…

相机拍照与摄影学基础

1.相机拍照 相机可能形状和大小不同&#xff0c;但基本功能相同&#xff0c;包括快门速度、光圈和感光度&#xff0c;这些是摄影的通用概念。即使是一次性相机也是基于这三个理念工作的。不同类型相机在这三个概念上的唯一区别是你可以控制这些功能的程度。这三个参数被称为相…