testNG(二)@DataProvider
用例参数化一般使用 @DataProvider, dataProvider作为数据提供者只能返回Object[][]和Iterator<Object[]>类型的数据。
使用场景
普通用例参数化
-
@DataProvider 和 @Test用例在一个类中,@DataProvider 方法可以不必是static
-
@DataProvider 和 @Test用例在不同类中,@DataProvider 方法必须是static,@Test设置属性 DataProviderClass
针对不同用例参数化
如果希望DataProvider对不同的Test方法使用不同的参数,那么
@Test(dataProvider = "provider") public void getFirst(String name, int age) { System.out.println("第一组"+name); } @Test(dataProvider = "provider") public void getSecond(String name, int age) { System.out.println("第二组 " + name); } @DataProvider(name = "provider") public Object[][] provider(Method method) { Object[][] objects; if (method.getName().equals("getFirst")) { //如果调用该DataProvider的函数是getFirst,那么就返回这个数组 objects = new Object[][] { { "cq1", 20 }, { "cq2", 22 } }; } else if (method.getName().equals("getSecond")) { //如果调用该DataProvider的函数是getSecond,那么就返回这个数组 objects = new Object[][] { { "cq3", 20 }, { "cq4", 22 } }; } else { //如果调用该DataProvider的函数不是getFirst也不是getSecond,那么就返回这个数组 objects = new Object[][] { {"cq5",33}, {"cq6",34} }; } return objects; }
dataprovider并发
一个使用@DataProvider参数化的用例可以多线程执行,设置@DataProvide的parallel=true
public class ScenarioDataProvider { @DataProvider(name = "hadoopTest", parallel=true) public static Object [][] hadoopTest(){ return new Object[][]{ ScenarioTestData.hadoopMain, ScenarioTestData.hadoopRun, ScenarioTestData.hadoopDeliverProps }; } }
dp并行执行的线程池容量默认为10,如果要更改并发的数量,也可以在suite tag下指定参数data-provider-thread-count:
<suite name="Testng Parallel Test" data-provider-thread-count="20" >
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具