统计行号列号

 import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File; print("========输出结果表格${csvPath}============ "+"${csvPath}");
print("========Case 表格${csvPath}============ "+"${csvCase}"); BufferedReader br=new BufferedReader(new FileReader("${csvCase}"));
//BufferedReader bufRdr = new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF8"));
String tmpStr="";
int rowNum=0;
while(tmeStr=br.readLine()!=null){
rowNum++;
}
rowNum=rowNum-1;//去掉CSV文件标题行;
vars.put("rowNum",String.valueOf(rowNum));
print("-----------------1CSV文件行数:--------"+rowNum+"-------------------");
log.info("-----------------1CSV文件行数:--------"+rowNum+"-------------------"); print("-----------------Case源CSV表格路径:--------"+"${csvCase}"+"-------------------");
//String getRowNum=vars.get("rowNum"); //int csvNo= Integer.parseInt(vars.get("rowNum")); int totalElements= Integer.parseInt(vars.get("rowNum"));
print("Total_csvNoCSV总行号---->> "+totalElements);
vars.put("totalElements", String.valueOf(totalElements));
//print(${__javaScript("${totalElements}")});
//print("======javaScript======"+${__javaScript(totalElements)});

prev.setDataEncoding("utf-8");

caseNo,testInput,intent,domain,expectedResult,PASS_FAIL,actualResult,response,description,tester

 import java.util.Collection;
import java.util.Iterator;
import java.util.*;
import java.io.FileWriter;
import java.util.Arrays;
import java.io.Writer;
import java.util.List;
import com.alibaba.fastjson.JSONPath;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import Util.WriteStreamAppend;
import Util.Excel;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.File;
import org.apache.log4j.Logger;
import com.cloudminds.csv2excel;
import com.cloudminds.csv2excel.CsvToExcel;
import com.cloudminds.csv2excel.CsvToExcel.convertCsvToXls;
import com.cloudminds.CsvToExcel.convertCsvToXls;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import org.apache.jmeter.assertions;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.assertions.AssertionResult;
import org.json.*; import org.apache.commons.lang.math.NumberUtils;
import org.apache.log4j.Logger;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.streaming.SXSSFSheet;
import org.apache.poi.xssf.streaming.SXSSFWorkbook;
import com.opencsv.CSVReader;
import com.cloudminds.csv2excel.AppMain; //print("========输出结果表格${csvPath}============ "+"${csvPath}");
//print("========Case 表格${csvPath}============ "+"${csvCase}");
//
//BufferedReader br=new BufferedReader(new FileReader("${csvCase}"));
//String tmpStr="";
//int rowNum=0;
//while(tmeStr=br.readLine()!=null){
// rowNum++;
//}
//rowNum=rowNum-1;//去掉CSV文件标题行;
//vars.put("rowNum",String.valueOf(rowNum));
//print("-----------------CSV文件行数:--------"+rowNum+"-------------------");
//log.info("-----------------CSV文件行数:--------"+rowNum+"-------------------"); print("${caseNo}");
print("${testInput}");
print("${intent}");
print("${expectedResult}");
print("${actualResult}"); String prevQuery = prev.getSamplerData();
print("当前的接口请求拼接 输出---->> "+prevQuery);
//CookieManager manager = ctx.getCurrentSampler().getCookieManager();
//print(manager);
String response=prev.getResponseDataAsString();
print("当前的接口返回值response 输出---->> "+response);
String tr1 =response;
vars.put("rsp",response);
print("tr1--->>> "+tr1);
print("==================== "+${ResponceData});
// 转换成JSON串
JSONObject json = JSONObject.parseObject(${ResponceData});
System.out.println("1当前json--->> "+ json);
JSONObject result = JSON.parseObject(${ResponceData});
System.out.println("2当前tr1--->> "+ result); print("断言$.json==================== "+"${source}"+" "+"${text}"+" "+"${intent_json}"+" "+"${url}");
Object source = JSONPath.eval(json, "${source}");
Object text = JSONPath.eval(json, "${text}");
Object intent_json = JSONPath.eval(json, "${intent_json}");
Object url = JSONPath.eval(json, "${url}"); String sou=JSONObject.toJSONString(source);
String tex=JSONObject.toJSONString(text);
String inte=JSONObject.toJSONString(intent_json);
String ur=JSONObject.toJSONString(url);
print(sou);
print(tex);
print(inte);
print(ur);
//String arsult="source字段: "+sou+" text字段: "+tex+" intent字段: "+inte+" url字段: "+ur;
String arsult="source= "+sou+";"+" text= "+tex+";"+" intent= "+inte+";"+" url= "+ur+";"+"当前AgentID= "+"${agentId}";
print(arsult);
vars.put("arsult",arsult); //默认走,分割
char SEPARATOR = ','; public void writeLine(FileWriter writer, String[] params, char separator)
{
boolean firstParam = true;
StringBuilder stringBuilder = new StringBuilder();
String param = "";
for (int i = 0; i < params.length; i++)
{
param = params[i];
log.info(param);
print("===========写入成功============");
//如果行中的第一个参数,则不需要分隔符
if (!firstParam)
{
stringBuilder.append(separator);
}
//append
stringBuilder.append(param);
firstParam = false;
}
stringBuilder.append("\n");
print("换行==================== 。");
log.info(stringBuilder.toString());
writer.append(stringBuilder.toString());
print("写入的数据 "+stringBuilder.toString()); } //get path of csv file (creates new one if its not exists)
print("========检查csv写入============ "+"${csvPath}");
String csvFile = "${csvPath}"; print("开始写入数据======= "); print("1断言内容======= "+"${assert_content}");
String ErrorValue ="${assert_content}";
print("2断言内容======= "+ErrorValue); if(prev.getResponseDataAsString().contains("${assert_content}")){
//大入口统一成功 if (!(ur=="")) {
if (!(ur.contains("mp3"))) {
String fail="FAIL";
print(arsult);
vars.put("passorFail",fail);
Failure = true;//直接判断失败,表示接口跑失败,在结果树中sample是红色的
FailureMessage =" 当前断言不包含 " + "${assert_content}" + "." ;
print ( " 未通过当前断言不包含 " + "${assert_content}"); // this goes to stdout
log.warn( "未通过当前断言不包含 " + "${assert_content}"); // this goes to the JMeter log file
} } if (!(inte=="")) {
if (!((inte.contains("cm_dance")) || (inte.contains("cloudminds")))) {
String fail="FAIL";
print(arsult);
vars.put("passorFail",fail);
Failure = true;//直接判断失败,表示接口跑失败,在结果树中sample是红色的
FailureMessage =" 当前断言不包含 " + "${assert_content}" + "." ;
print ( " 未通过当前断言不包含 " + "${assert_content}"); // this goes to stdout
log.warn( "未通过当前断言不包含 " + "${assert_content}"); // this goes to the JMeter log file
} } if (!(tex==null)) {
if (!(tex.length()>500)) {
String fail="FAIL";
print(arsult);
vars.put("passorFail",fail);
Failure = true;//直接判断失败,表示接口跑失败,在结果树中sample是红色的
FailureMessage =" 当前断言不包含 " + "${assert_content}" + "." ;
print ( " 未通过当前断言不包含 " + "${assert_content}"); // this goes to stdout
log.warn( "未通过当前断言不包含 " + "${assert_content}"); // this goes to the JMeter log file
} } System.out.println("大入口统一Pass");
String ps="PASS";
vars.put("passorFail",ps); } else{
String fail="FAIL";
print(arsult);
vars.put("passorFail",fail);
Failure = true;//直接判断失败,表示接口跑失败,在结果树中sample是红色的
FailureMessage =" 当前断言不包含 " + "${assert_content}" + "." ;
print ( " 未通过当前断言不包含 " + "${assert_content}"); // this goes to stdout
log.warn( "未通过当前断言不包含 " + "${assert_content}"); // this goes to the JMeter log file } String[] params ={"${caseNo}", "${testInput}", "${intent}","${domain}", "${expectedResult}",vars.get("passorFail"), vars.get("arsult") ,vars.get("rsp"),"${description}","${tester}"}; FileWriter fileWriter = new FileWriter(csvFile, true);
writeLine(fileWriter, params, SEPARATOR); fileWriter.flush();
fileWriter.close();
private static Logger logger = Logger.getLogger(AppMain.class);
fileLoc = CsvToExcel.convertCsvToXls("${csvPath}", csvFile);
logger.info("文件位置==>> " + fileLoc);

响应断言判断

//响应内容正则提取部分
String ResponseResult = vars.get("ResponseResult");
//断言
String Assertion = vars.get("Assertion"); //判断断言是否通过
if(ResponseResult.equals(Assertion) || ResponseResult.equals("Process Case")){
Failure = false;
//兼容其他并存的断言
FailureMessage = "接口响应:\r\n" + prev.getResponseDataAsString() + "\r\n";
}else{
Failure = true;
if (prev.getResponseDataAsString().length() < 255) {
FailureMessage = "接口响应:\r\n" + prev.getResponseDataAsString() + "\r\n";
}else{
FailureMessage = "接口响应片段:\r\n" + ResponseResult + "\r\n";
}
FailureMessage += "用例断言:\r\n" + Assertion; String logInfo = "\n";
logInfo = logInfo + prev.getThreadName() + " " + prev.getSampleLabel() + "\n";
logInfo = logInfo + prev.getSamplerData() + "\n";
logInfo = logInfo + prev.getResponseCode() + "\n\n";
logInfo = logInfo + prev.getResponseDataAsString() + "\n";
log.info(logInfo);
}

写入csv

import com.csvreader.CsvWriter;

String NewDataPath="C:\\";
CsvWriter cw = new CsvWriter(NewDataPath+"\\test.csv");
cw.writeRecord(new String[]{"test1","test2","test3"});
cw.writeRecord(new String[]{"a","aa","aaa"});
cw.close();

下载javacsv.jar,然后将其放入apache-jmeter-*\lib目录
import com.csvreader.CsvWriter;

Jmeter CSV操作的更多相关文章

  1. Java CSV操作(导出和导入)

    Java CSV操作(导出和导入)  CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件 ...

  2. csv操作帮助类

    功能描述: 集合转换为csv数据 DataSe转换为csv数据 using System; using System.Collections.Generic; using System.Data; u ...

  3. Jmeter接口测试操作

    一.Jmeter接口测试操作步骤 1. 启动jmeter,右键点击测试计划-->添加-->Threads(Users)-->线程组,点击线程组菜单,右边显示参数设置. 2 . 右键点 ...

  4. 【Java】Java CSV操作代码

    CSV是逗号分隔文件(Comma Separated Values)的首字母英文缩写,是一种用来存储数据的纯文本格式,通常用于电子表格或数据库软件.在 CSV文件中,数据“栏”以逗号分隔,可允许程序通 ...

  5. python之pandas数据筛选和csv操作

    本博主要总结DaraFrame数据筛选方法(loc,iloc,ix,at,iat),并以操作csv文件为例进行说明 1. 数据筛选 a b c (1)单条件筛选 df[df[] # 如果想筛选a列的取 ...

  6. pandas 写csv 操作

    pandas 写csv 操作 def show_history(self): df = pd.DataFrame() df['Time'] = pd.Series(self.time_hist) df ...

  7. jmeter分布式操作-远程启动功能探索

    一.背景: 之前在Jmeter插件监控服务器性能一篇中说到,在非GUI环境中监控时为了保存监控数据需要修改jmeter脚本,并且每次通过施压机(远程服务器,非GUI环境)来压测时都要将jmeter脚本 ...

  8. JMeter数据库操作详解

    Jmeter提供了JDBC连接的插件,通过执行SQL语句的java API,实现对数据库的访问和查询,同时可以操作一次向数据库插入上百条上千条数据. 一.安装驱动包 将需要连接JDBC的jar包放入j ...

  9. jmeter csv中获取带引号的数据详情

    最近在工作中,对jmeter实践的点滴的记录这里分享,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论. 1技巧1:从csv中获取带引号的数据详情 背景:我们从csv中获取数据,在jmeter中使用 ...

随机推荐

  1. qt5.10 for android 使用webview时qml 与html 中js的相互访问

    webview 本身没有qwebchannel 的接口,只能通过WebSocketServer 间接的访问. 参考 https://stackoverflow.com/questions/513131 ...

  2. requests记录

    http://docs.python-requests.org/zh_CN/latest/user/quickstart.html r = requests.get('http://httpbin.o ...

  3. 解决Ubuntu19.04无法安装SecureCRT

    推荐下载SecureCRT的tar包 在ubuntu19.04上安装SecureCRT的时候,报错libssl1.0.0-xxx没有安装 解决办法:下载并安装libssl1.0.0_1.0.1t-1+ ...

  4. Codeforces Round #591 (Div. 2, based on Technocup 2020 Elimination Round 1)

    Virtual participate 的,D题不会做,打了1:30就打不动了,过了ABCE. A - CME 题意:? 题解:? void test_case() { int n; scanf(&q ...

  5. python3监控系统资源最终版(获取CPU,内存,磁盘,网卡等信息),返回json格式。

    #!/usr/bin/env python3 #-*- coding:utf-8 -*- #create at 2018-12-07 'this is a system monitor scripts ...

  6. POI2010 Bridges

    好题\(Q\omega Q\) 我们考虑这个东西要求最大值最小,显然一眼二分答案对吧. 问题在于如何\(check\),我们二分答案之后把问题转换成了混合图如何求欧拉回路. 考虑欧拉回路的性质,每一个 ...

  7. Alpha项目冲刺! Day1-领航

    各个成员在 Alpha 阶段认领的任务 成员 任务 任务时长 林恩 项目进度签到代码审核与签入撰写博客协调组内合作 50 寇永明 美工和部分后台编写 30 杨长元 安卓端搭建 45 胡彤 服务器框架搭 ...

  8. 完全基于卷积神经网络的seq2seq

    本文参考文献: Gehring J, Auli M, Grangier D, et al. Convolutional Sequence to Sequence Learning[J]. arXiv ...

  9. TynSerial序列(还原)TClientDataSet

    TynSerial序列(还原)TClientDataSet 可以一次性序列(还原)多个TClientDataSet. 1)TClientDataSet查询数据 procedure TForm1.Qry ...

  10. Benchmark result without MONITOR running: Benchmark result with MONITOR running (redis-cli monitor > /dev/null): 吞吐量 下降约1半 Redis监控工具,命令和调优

    https://redis.io/commands/monitor In this particular case, running a single MONITOR client can reduc ...