加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读