TestNG参数和数据源

Selenium自动化测试框架:TestNG参数化与并行执行实战指南 在软件测试领域,自动化测试框架是提升测试效率和可靠性的核心基础设施。其核心原理在于通过结构化的代码组织和执行控制,将重复的测试任务自动化,从而解放人力、提高测试覆盖率和反馈速度。从技术价值来看,一个设计良好的自动化框架能够显著降低维护成本,增强测试用例的可复用性,并轻松集成到持续集成/持续交付(CI/CD)流程中,为敏捷开发和DevOps实践提供有力支撑。典型的应用场景包括Web应用的功能回归测试、兼容性测试以及需要频繁验证的业务流程。本文聚焦于Java生态中广泛使用的TestNG测试框架,深入探讨其两大关 阅读详情

TestNG参数

每个人都知道参数化在测试和自动化测试中的重要性。它  允许我们使用不同的输入和验证值多次自动运行测试用例。由于Selenium Webdriver更像是一个自动化测试框架,而不是一个现成的工具,因此您必须付出一些努力来支持自动化测试中的数据驱动测试。我通常更喜欢使用Microsoft Excel作为存储我的参数的格式,但我的许多粉丝都要求在TestNG数据提供程序上写一篇文章。

TestNG再次为我们提供了一个名为TestNG Parameters的有趣功能。TestNG允许您使用testng.xml将参数直接传递给测试方法。

怎么做…

让我举一个LogIn应用程序的一个非常简单的例子,其中需要用户名和密码来清除身份验证。

1)在我的演示版OnlineStore应用程序上创建一个测试来执行LogIn,它将两个字符串参数作为用户名和密码。

2)使用TestNG Annotation提供用户名和密码作为参数。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

package automationFramework;

 

import java.util.concurrent.TimeUnit;

 

import org.openqa.selenium.By;

 

import org.openqa.selenium.WebDriver;

 

import org.openqa.selenium.firefox.FirefoxDriver;

 

import org.testng.annotations.Test;

 

import org.testng.annotations.Parameters;

 

public class TestngParameters {

 

private static WebDriver driver;

 

  @Test

 

  @Parameters({ "sUsername", "sPassword" })

 

  public void test(String sUsername, String sPassword) {

 

  driver = new FirefoxDriver();

 

      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

 

      driver.get("http://www.store.demoqa.com");

 

      driver.findElement(By.xpath(".//*[@id='account']/a")).click();

 

      driver.findElement(By.id("log")).sendKeys(sUsername);

 

      driver.findElement(By.id("pwd")).sendKeys(sPassword);

 

      driver.findElement(By.id("login")).click();

 

      driver.findElement(By.xpath(".//*[@id='account_logout']/a")).click();

 

      driver.quit();

 

  }

 

}

3)参数将从testng.xml传递值,我们将在下一步中看到。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

<suite name="Suite">

 

    <test name="ToolsQA">

 

<parameter name="sUsername" value="testuser_1"/>

 

<parameter name="sPassword" value="Test@123"/>

 

<classes>

 

    <class name="automationFramework.TestngParameters" />

 

</classes>

 

    </test>

 

</suite>

现在,运行testng.xml,它将运行parameterTest方法。TestNG将尝试查找名为sUsername&sPassword的参数。

 

TestNG DataProviders

当您需要传递需要从Java创建的复杂参数或参数(复杂对象,从属性文件或数据库中读取的对象等)时,在这种情况下,可以使用Dataproviders传递参数。数据提供程序是使用@DataProvider注释的方法。数据提供程序返回一个对象数组。

让我们看看使用Dataproviders的相同登录示例。

怎么做…

1)定义方法credentials(),使用注释定义为Dataprovider。此方法返回对象数组的数组。

2)将方法test()添加到DataProviderTest类。此方法将两个字符串作为输入参数。

3)将注释@Test(dataProvider =“Authentication”)添加到此方法。属性dataProvider映射到“身份验证”。

测试将如下所示:

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

package automationFramework;

 

import java.util.concurrent.TimeUnit;

 

import org.openqa.selenium.By;

 

import org.openqa.selenium.WebDriver;

 

import org.openqa.selenium.firefox.FirefoxDriver;

 

import org.testng.annotations.DataProvider;

 

import org.testng.annotations.Test;

 

public class DataProviderTest {

 

private static WebDriver driver;

 

  @DataProvider(name = "Authentication")

 

  public static Object[][] credentials() {

 

        return new Object[][] { { "testuser_1", "Test@123" }, { "testuser_1", "Test@123" }};

 

  }

 

  // Here we are calling the Data Provider object with its Name

 

  @Test(dataProvider = "Authentication")

 

  public void test(String sUsername, String sPassword) {

 

  driver = new FirefoxDriver();

 

      driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);

 

      driver.get("http://www.store.demoqa.com");

 

      driver.findElement(By.xpath(".//*[@id='account']/a")).click();

 

      driver.findElement(By.id("log")).sendKeys(sUsername);

 

      driver.findElement(By.id("pwd")).sendKeys(sPassword);

 

      driver.findElement(By.id("login")).click();

 

      driver.findElement(By.xpath(".//*[@id='account_logout']/a")).click();

 

      driver.quit();

 

  }

 

}

右键单击测试用例脚本运行测试,然后选择Run As > TestNG Test。给它几分钟完成执行,一旦完成,结果将在TestNg Result窗口中显示如下。

TestNG参数和数据提供者

注意: 由于测试数据提供了两次,上述测试完全执行了两次。

JUnit 4 参数化测试实战:3步构建多场景 Calculator 单元测试 本文详细介绍了JUnit 4参数化测试在单元测试中的应用,通过计算器类的实战案例,展示如何3步构建多场景测试。文章涵盖参数化测试的核心价值、构建步骤及高级技巧,帮助开发者提升代码质量和测试效率,特别适合软件工程中的单元测试需求。 阅读详情

相关推荐

Testng 的数据源 驱动测试 代码与配置

testng数据源驱动测试,使用testng读取数据库、Excel、properties文件获取数据

Dragon's Life 1万+

TestNG中的数据源DataProvider概述

在上一篇文章中,我们知道带参数的测试方法,可以在testng.xml配置文件中为其参数赋值。但是那只适用于初始值简单且确切的情况。 对于初始值是复杂的对象,或者初始值是执行过程中生成的情况,就只能使用这里的数据源@DataProvider。 使用TestNG中的数据源@DataProvider,所有的工作都在测试类中完成。具体过程分为两个步骤,第一步是定义数据源,第二步是在测试方法中引用数据源

成长的足迹 8403

【Gazebo安装指南】Ubuntu22.04LTS环境下的高效配置与常见问题解决

本文提供了在Ubuntu 22.04 LTS系统上高效安装和配置Gazebo仿真环境的详细指南。针对Gazebo Classic版本,文章对比了通过ROS 2仓库和Ubuntu官方仓库两种主流安装方法,并重点解决了安装过程中常见的软件包定位、模型下载及图形驱动等问题,帮助用户快速搭建稳定的机器人仿真开发环境。

weixin_29279101的博客 437

TestNG Data Provider参数化

package com.course.testng.parameter; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.lang.reflect.Method; public class DataProviderTest { @Test(data...

qyykaola的博客 341

别再只测电压了!用STM32G474的ADC玩点花的:过采样提升精度与多通道扫描实战

本文深入探讨了STM32G474系列单片机的ADC高级应用,包括硬件过采样技术实现16位精度和多通道扫描结合DMA的自动数据采集方案。通过详细的配置步骤和实战案例,帮助开发者突破传统电压测量局限,提升信号采集精度和系统效率,适用于工业监控、医疗设备等高精度应用场景。

weixin_42647395的博客 240

经典算法之——解决全排列问题以及详解

回溯”指的是“状态重置”,可以理解为“恢复现场”,是在编码的过程中,是为了节约空间而使用的,而在递归或者深度优先中根据需要的场合来配合回溯法可以进一步对自己的代码进行优化。, n-1, n},方向都为向左。邻位对换法是全排列生成算法中的其中一种,它的换位是双向的,通过保存数字的“方向性”来快速得到下一个排列。最后以 3 开头的全排列为[3, 1, 2], [3, 2, 1];以 1 开头的全排列为[1, 2, 3], [1, 3, 2];以 2 开头的全排列为[2, 1, 3], [2, 3, 1];

m0_68987535的博客 8795

TestNG测试框架中DataProvider的使用

1:DataProvider在测试中的作用 1.1:DataProvider在TestNG框架中作为提供测试数据的注释,在执行Test任务时与循环非常相似  2:DataProvider的使用 2.1:DataProvider与Test方法在同一个class中 package TestNGEXT; import org.testng.annotations.DataProvider; ...

XXLoveSHT的博客 7981

一文速览:大模型语料构建与基础训练全流程实战指南

因为模型只有看到足够丰富、高质量的数据,才能真正学到“真本事”,展现出更强大的泛化能力,也就是能够在全新的场景和任务下,做出准确的推理和判断。我们日常做饭的时候,通常会先把买回来的菜仔细清洗干净,把坏掉的叶子、泥土、杂质等去除掉。同理,训练大模型的数据就像我们的食材,如果不干净,就会影响模型的学习效果,甚至训练出逻辑紊乱的模型。在大模型的世界里,有一句名言:“Garbage in, Garbage out”,翻译过来就是“垃圾输入,垃圾输出”,说白了,就是给模型喂的是什么数据,它学到的就是什么知识。

master_hunter的博客 1671

【TestNg】(3) dataprovider参数化数据驱动

在testng.xml文件中配置parameter标签,定义参数名和属性值。在Java代码中给测试方法通过@parameters注解传递进来,方法形参进行接收。局限性:通过parameters注入的参数必须定义在testng.xml中属性名会发生覆盖,传不了多次的参数,因为如果定义多个后面的会覆盖前面的testng.xml

weixin_40772077的博客 1082

ros系统在Debian系统上的移植

摘要:本文详细介绍了在Debian系统上移植ROS(机器人操作系统)的完整流程。主要内容包括:1)Debian版本与ROS版本的对应关系;2)配置软件源和安装依赖的具体命令;3)安装ROS核心组件和开发工具的步骤;4)常见兼容性问题的解决方案;5)性能优化和维护建议。重点强调了版本匹配的重要性,推荐选择LTS版本组合(如Debian11+ROS Noetic),并提供了从基本安装到自定义功能包编译的全套方案。文中包含详细的终端命令,可帮助用户顺利完成ROS移植并解决可能遇到的问题。

start_up_go的博客 1493

RK3588 开启多窗口

这样就支持多窗口了。

tzj1058756809的博客 268

TestNG参数化测试

关于testNG中的数据源参数化,有常见的两种形式: 1、通过xml的形式 2、通过@DataProvider注解实现 1、通过xml的形式: 添加testMath.xml文件 <?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite name="parameter"> <test name="param

UUUUUnnn的博客 854

YOLOv11与CLIP融合的零样本目标检测技术:原理、实现与创新实践

YOLO(You Only Look Once)系列作为单阶段检测器的代表,以其实时高效的特性在工业界获得广泛应用。YOLOv11作为该系列的最新演进,引入了多项架构创新: C3K2模块:采用双小卷积核替代传统大卷积核,在保持感受野的同时减少计算量。当参数c3k=False时退化为YOLOv8的C2F模块,提供灵活的精度-效率权衡。 C2PSA(Convolutional block with Parallel Spatial Attention):通过并行空间注意力机制增强对微小目标的特征提取能力,这对

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1068

TestNG与Junit的基本区别

自动化的框架选择webdriver+TestNG+Ant,是因为便于Daily Build和Ant的集成,而单元测试框架选择TestNG是由于具有以下优势,最主要体现"直接用Excel做为数据源"和"在xml中定义测试任务" 1.对于注解类的支持 Junit的执行顺序: Setup( ) test1( ) tearDown( ) Setup( ) test2( ) tearDown( ) TestNG的执行顺序: Setup( ) test1( ) ...

renxingzhadan的专栏 1601

【全网最新OD题库】2026华为 OD 机试C卷 机考真题库清单(全真题库)含考点说明(华为OD+2025年C卷+2025年B卷+2025年A卷+E卷+D卷+C卷)

华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od,华为od算法,华为od手撕代码,华为OD机试2024年最新题库,一文带你读懂华为OD,华为机试e卷,华为OD2025B卷、华

KJ.JK 3万+

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

接口自动化测试 返回html,testng接口自动化测试

testng自动化测试框架怎么用安装TestNG插件 在线安装由于网速原因,速度较慢。下面是离线安装方式。 (1)解压eclipse-testng离线包.zip (2)将【eclipse-testng离线包/feature】中的用testng做自动化测试在testng安装里怎么不能输入在TestNG的XML中设置参数。下 面的截图中,我设了两个参数,一个是testEnv,另一个是browser。参...

weixin_35651916的博客 411

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Selenium WebDriver自动化测试(框架篇)--TestNG测试框架:参数化和并行执行

TestNG的参数化测试和并行执行特性为自动化测试提供了强大的支持。参数化测试允许使用不同的输入重复测试逻辑,而并行执行可以显著提高测试执行的效率。通过封装通用方法,可以进一步提高测试代码的复用性和可读性。

我先测了 873

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

bytefx连接mysql_java结合testng,利用mysql数据库做数据源的数据驱动实例

上一篇我们介绍用如何用yaml结合testng做数据驱动,就又想来个数据库的参数化备注:@DataProvider的返回值类型只能是Object[][]与Iterator[]思路:解析sql查询返回结果,然后把解析出来的list转换成Object[][]类型的数据,且结合在@DataProvider中。然后把解析出来的list转换成Object[][]类型的数据,且结合在@DataProvider...

weixin_33711871的博客 88

记录一次简单TestNG + JAVA搭建接口测试

记录一次简单TestNG + JAVA搭建接口测试 开发环境: Excel + TestNG + Java 一、具体流程 主要分为3个步骤: 测试用例(@Test) + 数据驱动(@DataProvide) + 获取数据源(read Excel)。 1. 测试用例 @Test public class TestExample { ...

Ho_mj的专栏 479

Junit 更多-ApiHug准备-测试篇-010

🤗 ApiHug × {Postman|Swagger|Api...} = 快↑ 准√ 省↓

程序员超级伴侣-ApiHug 1130

java移动端接口测试_使用java+TestNG进行接口回归测试

TestNG是一个开源自动化测试框架,“NG”表示下一代(Next Generation的首字母)。 TestNG类似于JUnit(特别是JUnit 4),但它不是JUnit框架的扩展,相较于Junit而言,功能更强大,使用起来更加方便,比较适合测试人员来进行集成测试或是接口回归测试。一、TestNG的特点使用java和面向对象的功能方法的名称就不必受限于某种固定的格式,可以通过注释来识别需要执行...

weixin_28982257的博客 103

Excel+TestNG+HttpClient+ExtentReport实现接口自动化

这个接口自动化项目基于Java语言,以excel作为主要数据源,httpClient作为发起接口请求的api, TestNG作为测试框架,ExtentReport生成测试报告。

qq_43427624的博客 1265

Anek Latin 字体家族全解析:从 Ek Type 的多脚本设计协作到 Fontsource 变量字体实践

Anek Latin 是 Fontsource 仓库中收录的一款由孟买字型设计集体 Ek Type 打造的多脚本开源无衬线字体家族。本文以其在仓库中的官方介绍文档([article.en-US.md](https://link.gitcode.com/i/0efb762e4c5d0cb645f94014571aced8))为骨架,结合 [family.json](https://link.gitc

gitblog_00888的博客 1070

Java自动化接口jxl_基于maven+restAssured+Excel(jxl)+testng+extentreports的接口自动化-总代码...

Excel:报告图:一、testng代码package com.test.request;import static io.restassured.RestAssured.given;import static org.hamcrest.Matchers.containsString;import static org.hamcrest.Matchers.equalTo;import io.res...

weixin_36444881的博客 495

java gui框架_走进Java接口测试之从0到1搭建数据驱动框架(设计篇)

前言在上文走进Java接口测试之从0到1搭建数据驱动框架(需求篇) 中我们介绍了数据驱动框架中的需求,本文我们将根据需求进入设计阶段,废话不多说,直接进入主题。技术架构主要特点使用目前的主流SpringBoot2.2.0作为项目的主体框架;使用 Maven 作为构建项目,方便管理依赖的 JAR 包;使用 MySQL 集中式管理测试用例,结构化数据;使用 TestNG 作为测试框架,...

weixin_39676348的博客 381

qphy-ddr3自动化测试软件包,13.1 Web 自动化测试 -- 数据驱动

场景:在实际的测试工作中,我们经常会遇到如此场景:同样的测试操作步骤,但有多组不同的测试输入数据,需要执行多次测试操作。如果每条数据都去编写一个测试用例,这样难免增加代码量和维护量。在自动化测试中,针对这种情况,我们可以通过TestNG中的@DataProvider注解来轻松实现这种数据驱动操作,我们也可以把数据驱动理解为是测试数据和测试行为分离。数据源和使用在同一个类中在同一个类中通过@Data...

weixin_35705784的博客 520
上一篇: TestNG使用excel进行数据驱动代码
下一篇: TestNG日志和断言
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值