您的位置:軟件測試 > 開源軟件測試 > 開源性能測試工具 > Jmeter
Jmeter讀取執(zhí)行Case插入DB生成報表和備份記錄
作者:niuzhigang 發(fā)布時間:[ 2017/4/24 11:35:55 ] 推薦標(biāo)簽:性能測試工具 Jmeter

  有2點說明:讀取csv文件亂碼問題和讀取關(guān)閉文件(因為結(jié)束后會有備份歷史記錄,因此必須關(guān)閉CSV文件)
  亂碼問題解決方案不要用FileReader而是InputStreamReader可以指定讀取編碼
public CsvUtil(String fileName) throws Exception {
this.fileName = fileName;
//FileReader可能會根據(jù)不同的環(huán)境造成從CSV讀取時亂碼
br = new BufferedReader(new FileReader(fileName));
//解決亂碼
br = new BufferedReader(new InputStreamReader(new FileInputStream(fileName),"utf-8"));
String stemp;
while ((stemp = br.readLine()) != null) {
list.add(stemp);
}
//關(guān)閉csv文件
br.close();
}
  代碼開發(fā)基本完成,差數(shù)據(jù)備份了,數(shù)據(jù)備份的代碼如下:
package excFile;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
public class renFile {
public static boolean renameFile(String path,String oldname,String newname){
File file=new File(path+oldname);
if(file.exists())
{
file.renameTo(new File(path+newname));
return true;
}
return false;
}
public static String currTime(){
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");//設(shè)置日期格式
String now = df.format(new Date());// new Date()為獲取當(dāng)前系統(tǒng)時間
return now;
}
public static void main(String[] args) {
String path = "d:\";
String oldname = "excResult.csv";
String newname = "excResult"+renFile.currTime()+".csv";
System.out.println("獲取當(dāng)前時間:"+renFile.currTime());
System.out.println("獲取新的名稱:"+renFile.renameFile(path, oldname, newname));
}
}
  恭喜,代碼開發(fā)基本結(jié)束,那么如何被jmeter引用?
  把開發(fā)的代碼export為jar包
  如導(dǎo)出jar包名為excDB.jar
  由于插入DB要有jdbc依賴包。(mysql-jdbc.jar)
  導(dǎo)出后,把2個jar放到j(luò)meter的lib/ext目錄下,重啟jmeter 即可引用。
  如下:在jmeter的beanshell(取樣器)工具中寫入調(diào)用函數(shù)腳本即可
import readDB.*;
import excFile.*;
String excVersion = "9.1.2";
String excTerminal = "App";
String path = "D:\excResult.csv";
String primaryTitle = CsvUtil.getPryKey(path);
log.info("獲取接口名稱:"+primaryTitle);
String excRate = CsvUtil.getExcRate(path);
log.info("獲取單個接口用例通過率:"+excRate);
CsvUtil util = new CsvUtil(path);
int rowNum = util.getRowNum();
//log.info("獲取行數(shù):"+rowNum);
int caseTotalNum = rowNum -1;
log.info("獲取用例總數(shù):"+caseTotalNum);
int caseSucNum = CsvUtil.getSucNum(path);
log.info("獲取用例通過數(shù)量:"+caseSucNum);
for(int i=1;i<rowNum;i++){
String secordaryTitle = util.getString(i, 2);
log.info("獲取用例名稱:"+secordaryTitle);
String excResult = util.getString(i, 7);
log.info("獲取用例執(zhí)行結(jié)果:"+excResult);
//執(zhí)行insertDB---詳細(xì)數(shù)據(jù)
CsvUtil.insertDetailDB(primaryTitle, secordaryTitle, excVersion, excTerminal, excResult);
}
////執(zhí)行insertDB---統(tǒng)計數(shù)據(jù)
CsvUtil.insertTotalDB(primaryTitle, excVersion, excTerminal, excRate, caseTotalNum, caseSucNum);
String dir = "d:\";
String oldname = "excResult.csv";
log.info("獲取新文件名稱:"+renFile.currTime());
String newname = "excResult"+renFile.currTime()+".csv";
log.info("獲取新文件名稱:"+newname);
renFile.renameFile(dir, oldname, newname);

  導(dǎo)入DB的jmx文件腳本有幾個變量強調(diào)下:
  ①excVersion---版本號(如9.1.0)
 、趀xcTerminal---終端類型(如App、網(wǎng)站、M站)
 、踦ath---csv文件路徑(如d:excResult.csv)
 、躣ir---csv在哪個目錄下(如d:)
  ⑤oldname---csv文件名(如excResult.csv)
  其中import這2個包名要準(zhǔn)確,是你在開發(fā)這些class文件時創(chuàng)建的包名
  import readDB.*;
  import excFile.*;
  如:

  這樣會把存入DB的jmx文件和用例的jmx文件放在一個文件夾下執(zhí)行,執(zhí)行循序會根據(jù)jmx文件修改時間的正序來執(zhí)行,因此一定要確保執(zhí)行case的jmx文件時間要在導(dǎo)入DB的jmx文件前面。
  當(dāng)然也可以把所有按照接口生成的的jmx文件和分別導(dǎo)入DB的jmx文件放在一個文件夾下,但必須渠道入到的CSV文件名不相同,每個對應(yīng)讀取CSV導(dǎo)入DB的jmx文件的指向路徑也不同。
  基本完成,執(zhí)行結(jié)果如上面的導(dǎo)入DB的數(shù)據(jù)一樣。
  這樣整個開發(fā)到此結(jié)束!!!
  還有是接口名稱和用例名稱命名規(guī)范的問題!
  有2個要求:
  第一個要求:由于代碼做了接口名稱獲取的規(guī)則,是獲取第一條接口case名稱但不是單純的獲取,是截斷了前面2個字符,后面所有字符作為接口名稱。
  因此要求case輸出者在輸出接口自動化時第一條case名稱命名為“校驗XXXX接口”。∵@樣根據(jù)截斷規(guī)存入DB的接口名稱為“XXXX接口”,才符合接口名稱命名規(guī)范。
  第二個要求:jmx文件,一個接口自動化場景輸出一個jmx文件,不要在此jmx文件上輸出其它的接口case,在這個接口的基礎(chǔ)上輸出不同場景的case。
  否則會把不同接口統(tǒng)計到一個接口中去!
  備份的歷史記錄文件如下:(原文件名+時間戳)。
  為什么要renName?
  一方面:也是renName的根本原因,因為每次執(zhí)行的CSV文件,如果在執(zhí)行接口自動化的jmx文件前不刪除,會把本次的執(zhí)行結(jié)果追加到原csv文件!!
  另一方面:保存歷史記錄。

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd