声明方法:
<groups> <define name ="all"> <include name ="testgroup1"/> </define> <run> <include name ="testmethod1"/> <exclude/> </run> <dependencies> <group name ="group1" depends-on="goup2 group3"/> </dependencies> </groups> <classes> 标签说明:方法选择器,要执行的方法写在这里,参数有name和priority。
注释:
1.<classes>下必须写要执行的<class>,否则不会执行任何内容,如果填写了 class 没有写 methods,会按照填写的 class 的下的注释 @Test 去执行所有的方法
2.<classes>下的<methods>如果填写了<include>,那只会执行所填写的方法,没有填写的方法不会去执行
声明方法:
<classes> <class> <methods> <include name ="要执行的方法名"></include> </methods> </class> </classes> 五、testng 中方法参数传递 1、使用 @Parameters 注解从测试配置 xml 文件获取参数(1)创建测试类:PatamterTest.java
package com.ggf.testng.paramter; import org.testng.annotations.Parameters; import org.testng.annotations.Test; /** * @Description: testNG的参数化配置,通过xml文件进行方法的赋值操作 * @Author: ggf * @Date: 2019/12/29 */ public class PatamterTest { @Test @Parameters({"name","age"}) public void showInfo(String name, int age) { System.out.println("name="+ name + " age=" + age); } }(2)创建配置文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" > <suite> <test> <classes> <class/> <parameter value="张三"/> <parameter value="11"/> </classes> </test> </suite>(3)运行结果:
[TestNG] Running: D:\workspace\testwork\testNGDemo\src\main\resources\paramter.xml name=张三 age=11 =============================================== paramterTest Total tests run: 1, Failures: 0, Skips: 0 =============================================== 2、使用@DataProvider传送参数,@DataProvider可以传递一些比较复杂的参数示例:
package com.ggf.testng.paramter; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import java.util.HashMap; import java.util.Map; /** * @Description: 主要是对DataProvider注解的学习,通过这个注解的标识,来给测试类进行赋值。 * @Author: ggf * @Date: 2019/12/29 * 首先定义一个数据源的方法,通过@DataProvider注解来标识。 * 然后定义一个测试方法,通过@Test(dataProvider="")属性来获取数据 */ public class DataProviderTest { /** * 数据源,是方法提供数据,返回必须是一个二维数组 * @DataProvider(name = "data") 通过该注解来标识这个为数据源,name为数据源的名称。 * @return 返回一个二维数组 */ @DataProvider(name = "data") public Object[][] providerData() { Object[][] data = new Object[][] { {"zhangsan",12}, {"lisi",22}, {"wangwu",32} }; return data; } /** * 通过dataProvider来获取数据,执行的次数会根据数据源提供数据的数量 * 例如上面的二维数组长度为3,则该方法会执行三次。 * @param name * @param age */ @Test(dataProvider = "data") public void testDataProvider(String name, int age) { System.out.println("name=" + name + " age=" + age); } }运行结果:
[TestNG] Running: C:\Users\Administrator\.IntelliJIdea2019.2\system\temp-testng-customsuite.xml name=zhangsan age=12 name=lisi age=22 name=wangwu age=32 =============================================== Default Suite Total tests run: 3, Failures: 0, Skips: 0 =============================================== 六、testng 多线程测试 1、使用注解实现多线程测试invocationCount:线程调用的次数,默认1次。
threadPoolSize:线程池大小,和 invocationCount 一起使用,如果没有定义 invocationCount ,定义了threadPoolSize,是没有效果的。
@Test(invocationCount = 10,threadPoolSize = 3)
invocationCount 默认这个属性的值是 1, 即只会执行一次,当从新赋值时,该方法就会执行多次。
这里就是,定义了三个线程,来执行这个方法10次。
示例:
package com.course.testng.multiThread; import org.testng.annotations.Test; public class MultiThreadOnAnnotion { @Test(invocationCount = 10,threadPoolSize = 3) public void test(){ System.out.println(1); System.out.printf("Thread Id : %s%n",Thread.currentThread().getId()); } }