一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|編程技術|正則表達式|

服務器之家 - 編程語言 - JAVA教程 - java 與testng利用XML做數據源的數據驅動示例詳解

java 與testng利用XML做數據源的數據驅動示例詳解

2020-07-25 14:27java教程網 JAVA教程

這篇文章主要介紹了java 與testng利用XML做數據源的數據驅動示例詳解的相關資料,需要的朋友可以參考下

java 與testng利用XML做數據源的數據驅動示例詳解

testng的功能很強大,利用@DataProvider可以做數據驅動,數據源文件可以是EXCEL,XML,YAML,甚至可以是TXT文本。在這以XML為例:

備注:@DataProvider的返回值類型只能是Object[][]與Iterator<Object>[]

TestData.xml:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<data>
  <testmethod1>
    <input>1</input>
    <button>2</button>
  </testmethod1>
  <testmethod1>
    <input>3</input>
    <button>4</button>
  </testmethod1>
  <testmethod2>
    <input>3</input>
    <button>4</button>
  </testmethod2>
  <testmethod3>
    <input>3</input>
    <button>4</button>
  </testmethod3>
  <testmethod4>
    <input>3</input>
    <button>4</button>
  </testmethod4>
</data>

處用DOM4J解析XML,ParserXml.java文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package com.test;
 
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
 
public class ParserXml {
 
  public List parser3Xml(String fileName) {
    File inputXml = new File(fileName); 
    List list=new ArrayList();       
    int count = 1;
    SAXReader saxReader = new SAXReader();
    try {
      Document document = saxReader.read(inputXml);
      Element employees = document.getRootElement();
      for (Iterator i = employees.elementIterator(); i.hasNext();) {
        Element employee = (Element) i.next();
        Map map = new HashMap();
        Map tempMap = new HashMap();
        for (Iterator j = employee.elementIterator(); j.hasNext();) {
          Element node = (Element) j.next();         
          tempMap.put(node.getName(), node.getText());         
        }
        map.put(employee.getName(), tempMap);
        list.add(map);
      }
    } catch (DocumentException e) {
      System.out.println(e.getMessage());
    }
    return list;
  
   
 
}

然后把解析出來的list轉換成Object[][]類型的數據,且結合在@DataProvider中。

TestData.java文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package com.test;
 
import java.io.File;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
 
import org.testng.annotations.DataProvider;
 
public class TestData {   
  
  private List l;
  
  public TestData() { 
    this.getXmlData();   
  }
  
  public void getXmlData(){
    ParserXml p = new ParserXml();
    l = p.parser3Xml(new File("src/com/test/TestData.xml").getAbsolutePath());
  }
 
  @DataProvider
  public Object[][] providerMethod(Method method){   
    List<Map<String, String>> result = new ArrayList<Map<String, String>>();   
    for (int i = 0; i < l.size(); i++) {
      Map m = (Map) l.get(i); 
      if(m.containsKey(method.getName())){             
        Map<String, String> dm = (Map<String, String>) m.get(method.getName());
        result.add(dm); 
      }
    }
    Object[][] files = new Object[result.size()][];
    for(int i=0; i<result.size(); i++){
      files[i] = new Object[]{result.get(i)};
    }   
    return files;
  }
  
 
}

再通過測試文件來測試一下:

TestDataProvider.java文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package com.test;
 
import java.util.Map;
 
import org.testng.annotations.*;
 
public class TestDataProvider extends TestData {
 
  @Test(dataProvider="providerMethod")
  public void testmethod1(Map<?, ?> param){
    System.out.println("method1 received:"+param.get("input"));
  }
   
  @Test(dataProvider="providerMethod")
  public void testmethod2(Map<?, ?> param){
    System.out.println("method2 received:"+param.get("input"));
  }
   
  @Test(dataProvider="providerMethod")
  public void testmethod3(Map<?, ?> param){
    System.out.println("method3 received:"+param.get("input"));
  }
  
  @Test
  public void testmethod4(){
    System.out.println("method4 received:4");
  }
 
}

我們再回過頭來分析一下XML文件,有兩個testmethod1結點,testmethod2,testmethod3,testmethod4結點各一個,在TestDataProvider.java文件中,定義了testmethod1,testmethod2,testmethod3,testmethod4四個測試函數,且testmethod4沒有用到dataProvider,所以運行結果最后應該是testmethod1運行兩遍,testmethod2,testmethod3,testmethod4各運行一遍,結果如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
method1 received:1
method1 received:3
method2 received:3
method3 received:3
method4 received:4
PASSED: testmethod1({input=1, button=2})
PASSED: testmethod1({input=3, button=4})
PASSED: testmethod2({input=3, button=4})
PASSED: testmethod3({input=3, button=4})
PASSED: testmethod4
===============================================
  Default test
  Tests run: 5, Failures: 0, Skips: 0
===============================================

也就是說通過這種方式,只需要把測試函數先寫好,然后在XML文件中定義好數據就行了,就能控制函數是否運行,運行次數且運行的數據。

OK,Let's try.....

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/qq_35101189/article/details/54318579

延伸 · 閱讀

精彩推薦
  • JAVA教程利用Java計算某個日期是星期幾

    利用Java計算某個日期是星期幾

    不知道大家有沒有遇到過同樣的問題,誰誰的生日又要到了,看看是星期幾?每年都要遇到好幾次,所以想索性利用Java寫個小工具,一次查詢某具體日期在...

    瓜園耕讀1232020-06-24
  • JAVA教程淺析java中static的用法

    淺析java中static的用法

    這篇文章主要介紹了java中static的用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來...

    Keen貝貝2452019-06-19
  • JAVA教程java實現監聽u盤示例分享

    java實現監聽u盤示例分享

    這篇文章主要介紹了java實現監聽u盤示例,需要的朋友可以參考下 ...

    java技術網1752019-11-14
  • JAVA教程最好的8個Java RESTful框架

    最好的8個Java RESTful框架

    最好的8個Java RESTful框架,需要的朋友可以參考下 ...

    李景楓4312020-04-24
  • JAVA教程一個合格JAVA軟件工程師應該具備什么

    一個合格JAVA軟件工程師應該具備什么

    一個合格JAVA軟件工程師應該具備哪些專業技能,面試技巧是什么?本文為大家分享了2016版最新Java軟件工程師就業思維圖,感興趣的小伙伴們可以參考一下...

    Java團長3572020-07-05
  • JAVA教程Java 線程池ExecutorService詳解及實例代碼

    Java 線程池ExecutorService詳解及實例代碼

    這篇文章主要介紹了Java 線程池ExecutorService詳解及實例代碼的相關資料,線程池減少在創建和銷毀線程上所花的時間以及系統資源的開銷.如果不使用線程池...

    楊龍飛的博客4542020-07-08
  • JAVA教程Java類加載基本過程詳細介紹

    Java類加載基本過程詳細介紹

    這篇文章主要介紹了Java類加載基本過程詳細介紹的相關資料,需要的朋友可以參考下...

    java教程網4332020-07-14
  • JAVA教程Java讀取Map的兩種方法與對比

    Java讀取Map的兩種方法與對比

    相信大家都知道在Java中Map的使用非常頻繁,我們經常會需要對Map進行遍歷和讀取,那么下面這篇文章將展示兩種遍歷的方法以及簡要分析。有需要的可以參...

    bladestone4852020-07-05
主站蜘蛛池模板: 天天夜夜草草久久伊人天堂 | 91午夜在线观看 | 亚洲欧美视频在线播放 | 韩国理论片最新第一页 | 饱满奶大30p| 按摩院已婚妇女中文字幕 | 天堂网www在线观看 天堂欧美 | 亚洲欧美精品久久 | 日韩人成 | 黑人异族日本人hd | 欧美日韩国产亚洲一区二区三区 | 日韩欧美国产综合精品 | 久久99亚洲AV无码四区碰碰 | 成人在线视频在线观看 | 91香蕉国产在线观看免费永久 | 国产东北三老头伦一肥婆 | 大又大又黄又爽免费毛片 | 亚洲国产精品久久网午夜 | 青青国产成人久久激情911 | 五月天精品视频播放在线观看 | 青青在线视频免费 | 亚洲国产欧美在线看片 | 女主被男主为催奶药h | 日本高免费观看在线播放 | 青青网在线视频 | 国产精品成人自拍 | 青青成人在线 | 性xxxxⅹhd成人 | 西西人体大胆77777视频 | 胸奶好大好紧好湿好爽 | 日韩妹妹 | 臀精插宫NP文| 日本视频免费看 | 色老板在线 | 精品久久香蕉国产线看观看麻豆 | 免费369看片入口 | 亚洲 日本 天堂 国产 在线 | 91短视频社区在线观看 | 欧美一级鲁丝片免费看 | 日韩高清在线免费看 | 免费毛片 |