🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
TestNG中的另一个有趣的功能是参数化测试。 在大多数情况下,您会遇到业务逻辑需要大量测试的场景。 参数化测试允许开发人员使用不同的值一次又一次地运行相同的测试。 TestNG可以通过两种不同的方式将参数直接传递给测试方法: 使用testng.xml 使用数据提供者 下面分别介绍两种传参方式: 1、使用textng.xml传送参数 范例代码如下: ``` public class TestCase1 {     @Test(enabled=true)     @Parameters({"param1", "param2"})     public void TestNgLearn1(String param1, int param2) {         System.out.println("this is TestNG test case1, and param1 is:"+param1+"; param2 is:"+param2);         Assert.assertFalse(false);     }          @Test(dependsOnMethods= {"TestNgLearn1"})     public void TestNgLearn2() {         System.out.println("this is TestNG test case2");     } } ``` xml配置: ``` <?xml version="1.0" encoding="UTF-8"?> <suite name="Suite" parallel="false">   <test name="Test">     <parameter name="param1" value="1011111" />     <parameter name="param2" value="10" />     <classes>       <class name="com.demo.test.testng.TestCase1"/>     </classes>   </test> <!-- Test --> </suite> <!-- Suite --> ``` 运行xml,结果如下: ``` this is TestNG test case1, and param1 is:1011111; param2 is:10 this is TestNG test case2 =============================================== Suite Total tests run: 2, Failures: 0, Skips: 0 =============================================== ``` 2、使用@DataProvider传递参数 此处需要注意,传参的类型必须要一致,且带有@DataProvider注解的函数返回的必然是Object\[\]\[\],此处需要注意。 代码如下: ``` public class TestCase1 {     @DataProvider(name = "provideNumbers")     public Object[][] provideData() {         return new Object[][] { { 10, 20 }, { 100, 110 }, { 200, 210 } };     }          @Test(dataProvider = "provideNumbers")     public void TestNgLearn1(int param1, int param2) {         System.out.println("this is TestNG test case1, and param1 is:"+param1+"; param2 is:"+param2);         Assert.assertFalse(false);     }          @Test(dependsOnMethods= {"TestNgLearn1"})     public void TestNgLearn2() {         System.out.println("this is TestNG test case2");     } } ``` 运行此class,结果为: ``` this is TestNG test case1, and param1 is:10; param2 is:20 this is TestNG test case1, and param1 is:100; param2 is:110 this is TestNG test case1, and param1 is:200; param2 is:210 this is TestNG test case2 PASSED: TestNgLearn1(10, 20) PASSED: TestNgLearn1(100, 110) PASSED: TestNgLearn1(200, 210) PASSED: TestNgLearn2 ```