1. 程式人生 > >TestNG引數化測試之Excel讀取資料

TestNG引數化測試之Excel讀取資料

1、新建Excel文件,準備好測試資料

在當前工程的resources目錄下,新建檔名為testdata的Excel文件

這裡寫圖片描述

開啟Excel,將當前sheet重新命名為calculator,構造num1、num2、result三個引數資料
這裡寫圖片描述

2、新建一個ExcelData類用來獲取Excel中的資料

ExcelData類需要引入jxl.jar包,jxl.jar是專門處理excel中資料的,程式碼如下:

package com.mcj.testng;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import
java.util.HashMap; import jxl.Cell; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; public class ExcelData { public Workbook workbook; public Sheet sheet; public Cell cell; int rows; int columns; public String fileName; public String caseName; public
ArrayList<String> arrkey = new ArrayList<String>(); String sourceFile; /** * @param fileName excel檔名 * @param caseName sheet名 */ public ExcelData(String fileName, String caseName) { super(); this.fileName = fileName; this.caseName = caseName; } /** * 獲得excel表中的資料 */
public Object[][] getExcelData() throws BiffException, IOException { workbook = Workbook.getWorkbook(new File(getPath())); sheet = workbook.getSheet(caseName); rows = sheet.getRows(); columns = sheet.getColumns(); // 為了返回值是Object[][],定義一個多行單列的二維陣列 HashMap<String, String>[][] arrmap = new HashMap[rows - 1][1]; // 對陣列中所有元素hashmap進行初始化 if (rows > 1) { for (int i = 0; i < rows - 1; i++) { arrmap[i][0] = new HashMap<>(); } } else { System.out.println("excel中沒有資料"); } // 獲得首行的列名,作為hashmap的key值 for (int c = 0; c < columns; c++) { String cellvalue = sheet.getCell(c, 0).getContents(); arrkey.add(cellvalue); } // 遍歷所有的單元格的值新增到hashmap中 for (int r = 1; r < rows; r++) { for (int c = 0; c < columns; c++) { String cellvalue = sheet.getCell(c, r).getContents(); arrmap[r - 1][0].put(arrkey.get(c), cellvalue); } } return arrmap; } /** * 獲得excel檔案的路徑 * @return * @throws IOException */ public String getPath() throws IOException { File directory = new File("."); sourceFile = directory.getCanonicalPath() + "\\src\\resources\\" + fileName + ".xls"; return sourceFile; } }

3、建立TestNg測試類CalculatorExcel

package com.mcj.testng;
import java.io.IOException;
import java.util.HashMap;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
import jxl.read.biff.BiffException;

public class CalculatorExcel {

    Calculator cal=new Calculator();

    @DataProvider(name="num")
    public Object[][] Numbers() throws BiffException, IOException{
        ExcelData e=new ExcelData("testdata", "calculator");
        return e.getExcelData();
    }
    @Test(dataProvider="num")
    public void testAdd(HashMap<String, String> data){
        System.out.println(data.toString());
        float num1=Float.parseFloat(data.get("num1"));
        float num2=Float.parseFloat(data.get("num2"));
        float expectedResult=Float.parseFloat(data.get("result"));  
        Float actual=cal.add(num1, num2);
        Assert.assertEquals(actual, expectedResult);
    }
}

4、執行結果

{result=10.4, num2=3.9, num1=6.5}
{result=7, num2=2, num1=5}
{result=15, num2=8, num1=7}
{result=8.8, num2=3.3, num1=5.5}
{result=-2, num2=3, num1=-5}
{result=2.6, num2=-2, num1=4.6}
{result=27, num2=23, num1=4}
{result=37, num2=12, num1=25}
PASSED: testAdd({result=10.4, num2=3.9, num1=6.5})
PASSED: testAdd({result=7, num2=2, num1=5})
PASSED: testAdd({result=15, num2=8, num1=7})
PASSED: testAdd({result=8.8, num2=3.3, num1=5.5})
PASSED: testAdd({result=-2, num2=3, num1=-5})
PASSED: testAdd({result=2.6, num2=-2, num1=4.6})
PASSED: testAdd({result=27, num2=23, num1=4})
PASSED: testAdd({result=37, num2=12, num1=25})

===============================================
Default test
Tests run: 8, Failures: 0, Skips: 0

相關推薦

TestNG引數測試Excel讀取資料

1、新建Excel文件,準備好測試資料 在當前工程的resources目錄下,新建檔名為testdata的Excel文件 開啟Excel,將當前sheet重新命名為calculator,構造num1、num2、result三個引數資料 2、新建

TestNg引數測試讀取csv檔案

1、新建csv文件,準備好測試資料 在當前工程的resources目錄下,新建檔名為add的csv文件 開啟csv檔案,構造n1、n2、r1三個引數資料 2、新建一個CSVData類用來獲取csv檔案中的資料 package com.mc

postman—筆記3.Collections/資料引數/測試報告

Collections 儲存: 資料引數化: 執行前可以進行預覽: csv檔案寫法: 測試報告: 一.需要安裝:             1.nodejs             2.npm→cnpm             3.ne

.net持續整合測試Nunit引數測試

系列目錄 在進行單元測試的時候,很多時候,很多時候我們都是在單元測試方法內部提供特定的值,但是這樣測試往往造成樣本數不足從而導致覆蓋的結果不夠全面,很多時候我們更想提供來自外部的,滿足條件的一組值來進行測試.其實Nunit框架本身提供了為測試用例提供值的能力.我們可以對它進行擴充套件來實現匯入外部的值來填

Jmeter 中 CSV 如何引數測試資料並實現自動斷言

      當我們使用Jmeter工具進行介面測試,可利用CSV Data Set Config配置元件,對測試資料進行引數化,迴圈讀取csv文件中每一行測試用例資料,來實現介面自動化。此種情況下,很多測試工程師只會人工地檢視響應結果來判斷用例是否通過。&nb

JUnit5學習六:引數測試(Parameterized Tests)基礎

### 歡迎訪問我的GitHub [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) 內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等; ###

JUnit5學習七:引數測試(Parameterized Tests)進階

### 歡迎訪問我的GitHub [https://github.com/zq2599/blog_demos](https://github.com/zq2599/blog_demos) 內容:所有原創文章分類彙總及配套原始碼,涉及Java、Docker、Kubernetes、DevOPS等; ###

Google單元測試框架gtest官方sample筆記3--值引數測試

1.7 sample7--介面測試 值引數不限定型別,也可以是類的引用,這就可以實現對類介面的測試,一個基類可以有多個繼承類,那麼可以測試不同的子類功能,但是隻需要寫一個測試用例,然後使用引數列表實現對每個子類的測試。 使用值引數測試法去測試多個實現了相同介面(類)的共同屬性(又叫做介面測試) using

SpringBoot使用@RunWith(Parameterized.class)進行引數測試同時支援依賴注入,以及CommandLineRunner在單元測試時不執行主程序

問題提出 在使用SpringBoot進行單元測試的時候,我發現了兩個問題 使用引數化測試的時候,必須使用 @RunWith(Parameterized.class),而對Spring進行單元測試時,如果想使用依賴注入,即使用 @Autowired 註解,需要使

pandas從excel讀取資料處理的注意事項

##excel中支援的資料型別較pandas多的多 因為從excel讀取的資料型別很多預設是object,資料處理前建議轉換成str等。pandas中當多列同為object時,實際資料不相同。 如merge時 ggg=pd.merge(cs,c,how="inner",lef

引數測試(Parameterized Test)

Junit 4 引數化測試 允許通過變化範圍的引數值來測試方法。引數擦測試可以通過以下簡單的步驟實現: 對測試類添加註解 @RunWith(Parameterized.class)。 將需要使用變化範圍引數值測試的引數定義為私有變數。 使用上一步驟宣告的私有變數作為入

JUnit四(引數測試

JUnit—引數化測試 一.概述 JUnit 4引入了一項名為引數化測試的新功能。引數化測試允許開發人員使用不同的值反覆執行相同的測試。建立引數化測試需要遵循五個步驟: 使用@RunWith(Parameterized.class)註釋測試類。 建立一個

JUnit自動化單元測試(五):引數測試

要成為JUnit測試高手必不可少的一項技能就是引數化測試了,現在有一個方法根據不同的引數會有不同的結果,為了測試全面如果把所有可能的情況都逐個寫出來測試一遍那未免太low了,此時就可以用引數化測試,舉個例子: package junit.demo; impor

Javaexcel匯入資料同時相容.xls和.xlsx

前幾天寫了一個java中用poi操作excel匯入資料的小例子,後來發現並不能相容兩種版本的excel,經過改進發現了兩種方法都可以。 第一種,這種直接用了Workbook的工廠方法。 // 建立對Excel工作簿檔案的引用 //直接用HSSFWorkb

【坑】自動化測試Excel表格

參考一位大神的部落格專案架構,把元素和資料都引數化,但是總是被excel表格坑 1.無法下拉 動作列通過下拉列表來控制,點選下拉列表無反應 解決方案:不知道是不是中間動了什麼,因為Excel版本的問題,一直在調整,所以重新設定一遍 先設為任何值,之後再引入來源設為序列,下拉列表重新賦值 &n

使用Qt從excel讀取資料至資料庫

一、前言 本文介紹了一種在Qt平臺將excel表格的資料讀取至資料庫QSQLite的方法。思路為:先將excel表格轉為csv檔案,若原表格中存在著中文,還需將csv的編碼格式轉為UTF-8,接著由QFile開啟該csv檔案,將每一行的資料讀出,並寫入建立的資料庫表格。

JUnit 實現引數測試

1.在類的上面實現註解 @RunWith(Parameterized.class) : 2.編寫一個執行引數化的方法 public static Collection<Object[]> data(){},此方法和迭代器是一樣的效果,會在每次呼叫test 方法的

JUnit 4的引數測試

最近在研究TestN與JUnit 4的優劣勢。在測試JUnit 4的@Parameters的時候,遇到initializationError的錯誤。所以,想徹底研究了一下這個問題出現的原因,並找出解決方法。 問題描述: 之前使用JUnit的時候,可以直接以JUnit tes

junit5 入門系列教程-22-junit5 拓展實體-引數測試解決方案(Parameter Resolution)

目錄 ParameterResolver ParameterResolver 定義用於在執行時動態解析引數的擴充套件API。 如果測試建構函式或@Test、@RepeatedTest、@ParameterizedTest、@TestFactory

junit 引數測試

在測試類上面加上註解@RunWith(Parameterized.class)(如果不是引數化測試則:@RunWith(PowerMockRunner.class))@PrepareForTest(BuildIncidentCfgServiceImpl.class)根據測試類