數據驅動測試二:使用TestNG和CSV文件進行數據驅動
阿新 • • 發佈:2018-08-23
exceptio gets 完成 urn fine 數據驅動 兩個 二位數組 ==
轉載:https://blog.csdn.net/heart_1014/article/details/52013173
使用@DataProvider註解定義當前方法中的返回對象CSV文件(存放測試數據)作為測試腳本的測試數據集進行數據驅動。
用法參考代碼:
代碼在搜索完成後使用顯式等待方式,確認頁面已經加載完成,頁面底部的關鍵字"搜索幫助"已經顯示在頁面上
- //從CSV文件中讀取每行中前2個逗號分割的中文詞作為搜索框中輸入的搜索關鍵詞
- //斷言搜索結果頁面是否包含CSV文件中每行的最後一個詞匯的關鍵字
- import java.io.BufferedReader;
-
import java.io.FileInputStream;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.concurrent.TimeUnit;
- import org.openqa.selenium.By;
- import org.openqa.selenium.WebDriver;
-
import org.openqa.selenium.firefox.FirefoxDriver;
- import org.openqa.selenium.support.ui.ExpectedCondition;
- import org.openqa.selenium.support.ui.WebDriverWait;
- import org.testng.Assert;
- import org.testng.annotations.AfterMethod;
- import org.testng.annotations.BeforeMethod;
-
import org.testng.annotations.DataProvider;
- import org.testng.annotations.Test;
- public class TestDataByCSVFile {
- private static WebDriver driver;
- public static Object[][] data() throws IOException
- {
- return getSearchData("E:\\AutoData\\testData.csv");//獲取CSV文件的測試數據
- }
- public void testSearch(String searchdata1,String searchdata2,String searchResult) {
- //打開sogou首頁
- driver.get("http://www.sogou.com/");
- //輸入搜索條件
- //從CSV文件中讀取每行中前2個逗號分割的中文詞作為搜索框中輸入的搜索關鍵詞,在兩個搜索詞中間增加一個空格
- driver.findElement(By.id("query")).sendKeys(searchdata1+" "+searchdata2);
- //單擊搜索按鈕
- driver.findElement(By.id("stb")).click();
- //使用顯式等待方式,確認頁面已經加載完成,頁面底部的關鍵字"搜索幫助"已經顯示在頁面上
- (new WebDriverWait(driver,3)).until(new ExpectedCondition<Boolean>(){
- public Boolean apply(WebDriver d) {
- return d.findElement(By.id("sogou_webhelp")).getText().contains("搜索幫助");
- }});
- //斷言搜索結果頁面是否包含CSV文件中每行的最後一個詞匯的關鍵字
- Assert.assertTrue(driver.getPageSource().contains(searchResult));
- }
- public void beforeMethod() {
- //若無法打開Firefox瀏覽器,可設定Firefox瀏覽器的安裝路徑
- System.setProperty("webdriver.firefox.bin", "D:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe");
- //打開Firefox瀏覽器
- driver=new FirefoxDriver();
- //設定等待時間為5秒
- driver.manage().timeouts().implicitlyWait(5, TimeUnit.SECONDS);
- }
- public void afterMethod() {
- //關閉打開的瀏覽器
- driver.quit();
- }
- //讀取CSV文件的靜態方法,使用CSV文件的絕對文件路徑作為函數參數
- public static Object[][] getSearchData(String FileNameroot) throws IOException{
- List<Object[]> records=new ArrayList<Object[]>();
- String record;
- //設定UTF-8字符集,使用帶緩沖區的字符輸入流BufferedReader讀取文件內容
- BufferedReader file=new BufferedReader(new InputStreamReader(new FileInputStream(FileNameroot),"UTF-8"));
- //忽略讀取CSV文件的標題行(第一行)
- file.readLine();
- //遍歷讀取文件中除第一行外的其他所有內容並存儲在名為records的ArrayList中,每一行records中存儲的對象為一個String數組
- while((record=file.readLine())!=null){
- String fields[]=record.split(",");
- records.add(fields);
- }
- //關閉文件對象
- file.close();
- //將存儲測試數據的List轉換為一個Object的二維數組
- Object[][] results=new Object[records.size()][];
- //設置二位數組每行的值,每行是一個Object對象
- for(int i=0;i<records.size();i++){
- results[i]=records.get(i);
- }
- return results;
- }
- }
運行結果:
- PASSED: testSearch("老九門", "演員", "趙麗穎")
- PASSED: testSearch("X站警天啟", "導演", "布萊恩·辛格")
- PASSED: testSearch("誅仙青雲誌", "編劇", "張戩")
- ===============================================
- Default test
- Tests run: 3, Failures: 0, Skips: 0
- ===============================================
測試數據的CSV文件內容:
搜索關鍵詞1,搜索關鍵詞2,搜索結果
老九門,演員,趙麗穎
X站警天啟,導演,布萊恩·辛格
誅仙青雲誌,編劇,張戩
註意:使用寫字板程序編輯CSV文件內容,在保存文件時要將文件存儲為UTF-8編碼格式。
數據驅動測試二:使用TestNG和CSV文件進行數據驅動