统计行号列号

 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. As I Began to Love Myself

    As I Began to Love Myself: Charlie Chaplin on his 70th birthday As I began to love myself I found th ...

  2. php cookie 操作

    创建 cookie <?php setcookie(); ?> 取回 Cookie 的值 <?php // Print a cookie echo $_COOKIE["us ...

  3. dsu on tree学习笔记

    前言 一次模拟赛的\(T3\):传送门 只会\(O(n^2)\)的我就\(gg\)了,并且对于题解提供的\(\text{dsu on tree}\)的做法一脸懵逼. 看网上的其他大佬写的笔记,我自己画 ...

  4. 简易版最长序列(map映射)

      题目描述 给你一组数(未排序),请你写设计一个程序:求出里面个数最多的数.并输出这个数的长度. 例如:给你的数是:1. 2. 3. 3. 4. 4. 5. 5. 5 .6, 其中只有6组数:1, ...

  5. qt mvc3

    前面两节讲的model是一维的,这次开始二维的也就是我们常说的Table,相对与list,我们多了一个列的概念. 下面讲解一个例子.我先说明一下我们这个例子,在程序目录下,我们有一个文本文件,其中存放 ...

  6. ASP.NET MVC传递Model到视图的多种方式之通用方式的使用

    ASP.NET MVC传递Model到视图的多种方式总结——通用方式的使用 有多种方式可以将数据传递到视图,如下所示: ViewData ViewBag PartialView TempData Vi ...

  7. Windows 下 把EXE 程序变成服务运行

    1. 下载  instsrv.exe 和 srvany.exe   我下载的地址  [点击打开链接][https://www.cr173.com/soft/64394.html] 2. cmd  cd ...

  8. osg 添加 fbx插件 osg中编译fbx

    使用osg加载fbx模型,需要自己编译fbx插件,编译流程与插件使用案例如下 代码地址:https://github.com/shelltdf/osgFBX CMake Error: The foll ...

  9. 阶段5 3.微服务项目【学成在线】_day17 用户认证 Zuul_10-前端显示当前用户-jwt查询接口

    定义接口 在api的项目里面定义.AuthControllerApi里面定义接口 jwtResult,里面就有一个jwt的字段. 实现接口 需要这三步 定义私有方法从cookie中读取访问令牌 参数需 ...

  10. PAT 甲级 1055 The World's Richest (25 分)(简单题,要用printf和scanf,否则超时,string 的输入输出要注意)

    1055 The World's Richest (25 分)   Forbes magazine publishes every year its list of billionaires base ...