testNG参数化
听说testNG比junit更好用,记录下
环境:springboot2.0+testNG6.8+maven+myeclipse
一 安装
(1)m'yeclipse安装testNg包,下载testNg包,拷贝到myeclpse目录下
(2)pom.xml导入testNg的依赖包
二,基本功能
(1)一些标注@BeforeClass,BeforeSuite,BeforeMethod,@Test(enabled=false)的执行顺序和junit基本一致的原理
(2)通过配置文件suite.xml执行suite,这里有个groups分组,包括类分组和方法分组,来灵活制定运行哪些测试case,也和原本预计的没啥区别
三,参数化
比较感兴趣额是参数化,2中常用的传参方式
(1)suite.xml配置文件配置parameters,直接执行suite.xml
注意:这种方法必须执行xml文件,而不是java文件,否则报错
Parameter 'username' is required by @Test on method pamameterUse1 but has not been marked @Optional or defined
java代码
@Parameters({ "username","password" }) @Test public void pamameterUse1(String username,String password){ System.out.println(username+password); }
suite.xml配置文件
<?xml version="1.0" encoding="UTF-8"?> <suite name="Suite"> <test name="myparam"> <parameter name="username" value="mili"/> <parameter name="password" value="123455"/> <classes> <class name="com.summit.suite.Parameter"></class> </classes> </test> </suite>
执行suite.xml结果
mili123455
===============================================
(2)@DaraProvider注解实现传参,可直接执行java文件
@DataProvider(name="milidata") public Object[][] providerData(){ return new Object[][]{{"wangli","33333"},{"lixiao","44444"}}; } @Test(dataProvider = "milidata") public void testDataProvider(String name,String pwd){ System.out.println(name+pwd); }
wangli33333
lixiao44444
PASSED: testDataProvider("wangli", "33333")
PASSED: testDataProvider("lixiao", "44444")
===============================================
(3)日常中需要把参数和脚本分离开,testNg怎么做呢?