java结合testng,利用yaml做数据源的数据驱动实例
发布时间:2020-12-14 14:39:12 所属栏目:百科 来源:网络整理
导读:testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本。在这以yaml为例: 备注:@DataProvider的返回值类型只能是Object[][]与IteratorObject[] application.yaml: user: name: xiaoqiang passwd: "1
testng的功能很强大,利用@DataProvider可以做数据驱动,数据源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本。在这以yaml为例: 备注:@DataProvider的返回值类型只能是Object[][]与Iterator<Object>[] application.yaml:user:
name: xiaoqiang
passwd: "1236454"
user1:
name: xiaohong
passwd: "1238309"
user2:
name: rongrong
passwd: "908344s"
user3:
name: lisi
passwd: "123566s"
解析yaml文件,然后把解析出来的list转换成Object[][]类型的数据,且结合在@DataProvider中。 YamlDataHelper.java文件import org.testng.annotations.DataProvider; org.yaml.snakeyaml.Yaml; java.io.FileInputStream; java.net.URL; java.util.ArrayList; java.util.HashMap; java.util.List; java.util.Map; public class YamlDataHelper { private static List<Map<String,String>> getYamlList() { List<Map<String,String>> list = new ArrayList(); Map<String,Map<String,String>> map = readYamlUtil(); for (Map.Entry<String,1)"> me : map.entrySet()) { Map<String,String> numNameMapValue = me.getValue(); Map<String,String> tmp = new HashMap<>(); nameMapEntry : numNameMapValue.entrySet()) { String numKey = nameMapEntry.getKey(); String nameValue = nameMapEntry.getValue(); tmp.put(numKey,nameValue); } list.add(tmp); } return list; } static Map<String,1)"> readYamlUtil() { Map<String,String>> map = null; try { Yaml yaml = Yaml(); URL url = YamlDataHelper.class.getClassLoader().getResource("application.yaml"); if (url != ) { //获取yaml文件中的配置数据,然后转换为Map map = yaml.load( FileInputStream(url.getFile())); map; } } catch (Exception e) { e.printStackTrace(); } map; } @DataProvider public Object[][] yamlDataMethod() { List<Map<String,String>> yamlList = getYamlList(); Object[][] files = Object[yamlList.size()][]; for (int i = 0; i < yamlList.size(); i++) { files[i] = Object[]{yamlList.get(i)}; } files; } } 再通过测试文件来测试一下: TestYamlData.java文件: org.testng.annotations.Test; class TestYamlData extends YamlDataHelper{ @Test(dataProvider = "yamlDataMethod") void testYamlData(Map<String,1)"> param){ System.out.println(param.get("name")+"t"+param.get("passwd")); } } 运行结果如下: [TestNG] Running: C:UsersAdministrator.IntelliJIdea2018.2systemtemp-testng-customsuite.xml xiaoqiang 1236454 xiaohong 1238309 rongrong 908344s lisi 123566s =============================================== Default Suite Total tests run: 4,Failures: 0,Skips: 0 =============================================== Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 Process finished with exit code 0 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |