亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > TestNG
TestNG之使用@DataProvider注解做數據驅動
作者:網絡轉載 發布時間:[ 2016/4/22 11:12:55 ] 推薦標簽:軟件測試工具 單元測試工具

  前兩天學了一下@DataProvider,有時間總結一下。
  testng很強大,提供了很多注解,其中利用@DataProvider可以做數據驅動,數據源文件可以是EXCEL,XML,甚至可以是TXT文本。下面以讀取XML為例。
  通過@DataProvider讀取XML文件中數據,然后測試方法只要標示獲取數據來源的DataProvider,那么對應的DataProvider會把讀取的數據傳給該test方法,我簡單的畫了一下整個流程(很丑,莫怪),下面通過代碼具體看一下@DataProvider的使用。


  工具:
  eclipse、TestNg、Selenium
  場景:
  登陸百度首頁,點擊登錄,輸入用戶名和密碼。
  其中賬號信息通過DataProvider將XML中的登陸賬號和密碼傳給test方法
  前提:
  Selenium代碼可以打開百度首頁,訪問登陸頁面
  1、構建XML數據文件
  LoginTest.xml
xml
<?xml version="1.0" encoding="UTF-8"?>
<data>
<loginRight>
<username>尹豆兒</username>
<password>616189</password>
</loginRight>
</data>
  注:XML文件名好跟測試方法名稱一致,方便了解其左右
  2、讀取xml文件的方法
  XmlUtil.java
package Tool;
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 XmlUtil {
public static List getXmlComent(String fname){
//獲取xml文件完全路徑
String path=CommonFunction.getAbsolutionPath(fname);
System.out.println("xml·path"+path);
List contList=new ArrayList();
//dom4j中讀取xml文件的方法
SAXReader saxR=new SAXReader();
try {
Document doc=saxR.read(path);
//存放頂結點
Element eleroot=doc.getRootElement();
//parMap,存放頂結點下一級結點
Map parMap=new HashMap();
Map sonMap=new HashMap();
for(Iterator i=eleroot.elementIterator();i.hasNext();){
//parMap中存放的結點的子結點
Element elepar=(Element)i.next();
for(Iterator j=elepar.elementIterator();j.hasNext();){
Element eleSon=(Element)j.next();
System.out.println("+++++"+eleSon.getName()+"    "+ eleSon.getText());
sonMap.put(eleSon.getName(), eleSon.getText());
}
parMap.put(elepar.getName(),sonMap);
System.out.println("*****"+elepar.getName());
contList.add(parMap);
}
} catch (DocumentException e) {
e.printStackTrace();
}
return contList;
}
}
  3、編寫DataProvider
  LoginDataProvider.java
package dataProvider;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import testData.FilePath;
import Tool.XmlUtil;
public class LoginDataProvider {
private static Object[][] obj;
private static List parList=new ArrayList();
private static List sonList=new ArrayList();
//@DataProvider(name="loginProvider")
@DataProvider()
public static Object[][] loginProvider(Method method) {
System.out.println("@DataProvider(name='loginProvider')");
System.out.println("dataProvider"+method.getName());
//讀取xml內容
parList = XmlUtil.getXmlComent(FilePath.LoginTestData);
for (int i=0;i< parList.size();i++) {
Map map = (Map)parList.get(i);
if (map.containsKey(method.getName())) {
Map<String,String> submap = (Map<String,String>) map.get(method.getName());
sonList.add(submap);
}
}
if (sonList.size() > 0) {
obj = new Object[sonList.size()][];
for (int i = 0; i < sonList.size(); i++) {
obj[i] = new Object[] { sonList.get(i) };
}
return obj;
}else{
Assert.assertTrue(sonList.size()!=0,parList+"為空,找不到屬性值:"+method.getName() );
return null;
}
}
}
  4、test方法中標明使用的DataProvider
  LoginTest.java
package TestCase;
import java.awt.Frame;
import java.util.Date;
import java.util.Map;
import org.openqa.selenium.NoSuchFrameException;
import org.testng.Reporter;
import org.testng.annotations.Test;
import dataProvider.LoginDataProvider;
public class LoginTest extends TestBase{
@Test(dataProvider="loginProvider",dataProviderClass=LoginDataProvider.class)
public  void loginRight(Map<?, ?> param) throws InterruptedException{
baiduPage.clickLogin();
loginPage.login_Right((String)param.get("username"), (String)param.get("password"));
}
}
  5、執行test用例查看是否取到數據
  testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Tests" verbose="5">
<test name="test">
<classes>
<class name="TestCase.LoginTest"></class>
</classes>
</test>
</suite>

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 免费高清特级毛片 | 男人操女人免费网站 | 色噜噜狠狠狠狠色综合久不 | 91短视频在线观看手机 | 国产成人一级片 | 欧美一级看片a免费观看 | h肉动漫在线视频无修无遮挡 | 最近2019中文字幕 | 天天操2021| 天天操2023| 天天影视涩香欲综合网 | 九九精品免视频国产成人 | 激情影院成人区免费观看视频 | 日日噜噜噜夜夜爽爽狠狠 | 亚洲无矿砖码专区2020 | 综合激情六月 | 中文字幕日韩高清 | 成年人午夜视频 | 国内精品小视频福利网址 | 曰批免费视频播放在线看片二 | 成人18视频日本 | 国产午夜一区二区在线观看 | 特级一级毛片视频免费观看 | 国产99热在线观看 | 成人合成mv福利视频网站 | 91短视频在线观看免费 | 精品国产一区二区三区免费 | 可以直接看的av网址站 | 日韩在线视频不卡一区二区三区 | 成人羞羞视频在线观看 | 一区二区三区四区国产精品 | 日日夜夜天天干干 | 亚洲第一成年免费网站 | 一本一本大道香蕉久在线精品 | 成人做视频免费 | 免费成年网站 | 在线观看黄色一级片 | 全网免费在线播放视频入口 | 一个人看的视频免费高清在线 | 中文字幕在线观看亚洲 | 亚洲日本va午夜中文字幕一区 |