TestNG-参数化
TestNG支持参数化测试,一种是通过xml文件进行参数化,第二种就是DataProvider参数化
1️⃣通过xml文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd"> <suite name="parmsuitename"> <test name="parm"> <!--参数--> <parameter name="name" value="Jack"></parameter> <parameter name="age" value="25"></parameter> <!--指定运行的类--> <classes> <class name="com.course.testng.parm.ParamterTest"></class> </classes> </test> </suite>
类代码:需要两个注解,一个是@Test,标注是个测试类;另一个是@Parameters,写着传入的参数
package com.course.testng.parm; import org.testng.annotations.Parameters; import org.testng.annotations.Test; public class ParamterTest { @Test @Parameters({"age","name"}) public void paramTest1(int age, String name) { System.out.println(age + name); } }
2️⃣通过DataProvider:Object[][]
一、将值直接传递到方法
package com.course.testng.parm; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; public class DataProviderTest { @Test(dataProvider = "dataDemo") public void paramTestByDataProvider(String name, int age) { System.out.println("年龄是:" + age + ",姓名是:" + name); } @DataProvider(name = "dataDemo") public Object[][] providerData() { Object[][] objects = new Object[][]{ {"Jack", 25}, {"Rose", 26} }; return objects; } }
运行结果:
1 2 3 4 5 6 7 | 年龄是: 25 ,姓名是:Jack 年龄是: 26 ,姓名是:Rose =============================================== Default Suite Total tests run: 2 , Failures: 0 , Skips: 0 =============================================== |
二、通过不同的方法名,传递不同的参数值
@Test(dataProvider = "methodDemo") public void methodTest1(String name, int age) { System.out.println("Iterator1的年龄是:" + age + ",姓名是:" + name); } @Test(dataProvider = "methodDemo") public void methodTest2(String name, int age) { System.out.println("Iterator222年龄是:" + age + ",姓名是:" + name); } @DataProvider(name = "methodDemo") public Object[][] methodDataTest(Method method) { //方法参数中一定要写(Method method),引入的包是:java.lang.reflect.Method Object[][] objects = null; if (method.getName().equals("methodTest1")) { //根据不同的方法名,传不同的参数值 objects = new Object[][]{ {"张三呢", 23}, {"李四呀", 12} }; } else if (method.getName().equals("methodTest2")) { objects = new Object[][]{ {"gaga", 36}, {"justin", 14} }; } return objects; }
根据方法名,传不同的参数
通过DataProvider还有一种返回迭代器的方法,下次再补充
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· DeepSeek “源神”启动!「GitHub 热点速览」
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 2 本地部署DeepSeek模型构建本地知识库+联网搜索详细步骤