微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

java结合testng,利用yaml做数据源的数据驱动实例

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:\Users\Administrator\.IntelliJIdea2018.2\system\temp-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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐