jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件
2017-08-17 16:17
936 查看
jmeter添加http请求、java请求,将返回的json数据提取出来并将结果追加到一个文件
抽奖活动返回的是json数据,所以需要先将返回的json字符串里面需要统计的字段提取出来,此处需要统计的是reward字段(reward即返回的奖品类型)
每个http请求都会返回一个reward,但jmeter一个文件只能保存一个结果,不能往结果中追加结果,如果要统计每个reward的类型,最优的办法就是将所有返回同类型的reward字段全部追加到一个文件并保存在本地,因此可以采用java请求来处理,追加写到文件并保存到本地
1、jmeter发送http请求
1) 新建http请求默认值
可在这里面添加请求的服务器IP或名称
2)新建http请求
可在这选择请求方法(此处是post),请求路径以及携带的参数,携带参数的确定可通过抓包获取
运行之后,返回数据为:
{
"errcode":0,
"data":
{
"reward":4
}
}
我们只需要统计奖品类型reward返回的字段
2、提取json数据
1)添加正则表达式
引用名称:reward(此处可自定义)
其中正则表达式的内容是否正确,可以先自己测试一把,即运行之后在察看结果树里面可以看到一个http请求,选择RegExp Tester,在Regular expression里面输入正则表达式,可以看见返回的结果是否正确
2)查看正则表达式的返回结果,可在线程组-添加Debug Sampler,运行之后可选择Debug Sampler 查看正则表达式的返回结果
3)正则表达式可以正确返回,所以我们正则表达式引用的名称 reward可以作为一个变量,可在其他地方输入${reward}来引用
3、java请求
使用正则表达式已经提取到奖品类型reward字段,再作为参数提供给java请求,按照log+返回奖品类型命名文件,把同一个返回类型保存到同一个文件里面,reward有n个返回类型,就保存n个文件
eclipse中新建jmeter相关java类,有需要 用到jmeter相关的jar包,所以需要将截图下的两个jar导入到eclipse中
如下两个新建的java类,参考网址:http://www.cnblogs.com/testway/articles/6663910.html
1)新建一个java类AppendFile 功能是往文件中追加内容
package editFile;
import java.io.IOException;
import java.io.RandomAccessFile;
public class AppendFile {
public static void main(String[] args) {
AppendFile.appendFile("E:\\dd.txt", "1111");
AppendFile.appendFile("E:\\dd.txt", "11111");
}
public static void appendFile(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content + "\r\n");
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2)新建一个java请求类WriteResult ,作用是从jmeter获取奖品类型reward,并使用返回类型 写入文件
package editFile;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class WriteResult implements JavaSamplerClient {
private SampleResult results;
private String reward;
private String threadNumber;
// 设置从jmeter传入参数
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("reward", "${reward}");// 设置reward参数 ---此处的${reward}参数即正则表达式提取参数命名的变量名
return params;
}
// 初始化方法,性能测试时只执行一次
public void setupTest(JavaSamplerContext arg0) {
}
// 重复执行测试的地方
public SampleResult runTest(JavaSamplerContext arg0) {
reward = arg0.getParameter("reward"); // 获取jmeter传入的参数值,
results = new SampleResult();
results.sampleStart();// jmeter 开始统计响应时间标记
AppendFile.appendFile("E:\\jmeter\\log"+ reward + ".txt", reward);
if(reward.length() ==1){
results.setSuccessful(true);
results.setResponseData("reward:"+reward, null);
}else{
results.setSuccessful(false);
results.setResponseData("获取失败 ", null);
}
results.sampleEnd();// jmeter 结束统计响应时间标记
return results;
}
// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
public void teardownTest(JavaSamplerContext arg0) {
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
3)把java项目文件导出jar包,放在jmeter 的lib/ext 文件夹中,打开jmeter添加一个jmeter 的java请求,选中测试类,会自动显示reward参数(这个参数是在java请求类WriteResult 的方法中设置:
public Arguments getDefaultParameters()
params.addArgument("reward", "${reward}");
4、使用10个线程循环50次,可在本地保存路径下面看到保存的结果追加文件:
选择其中一个文件打开,http请求返回的同类型全部保存在同一个类型文件里面
抽奖活动返回的是json数据,所以需要先将返回的json字符串里面需要统计的字段提取出来,此处需要统计的是reward字段(reward即返回的奖品类型)
每个http请求都会返回一个reward,但jmeter一个文件只能保存一个结果,不能往结果中追加结果,如果要统计每个reward的类型,最优的办法就是将所有返回同类型的reward字段全部追加到一个文件并保存在本地,因此可以采用java请求来处理,追加写到文件并保存到本地
1、jmeter发送http请求
1) 新建http请求默认值
可在这里面添加请求的服务器IP或名称
2)新建http请求
可在这选择请求方法(此处是post),请求路径以及携带的参数,携带参数的确定可通过抓包获取
运行之后,返回数据为:
{
"errcode":0,
"data":
{
"reward":4
}
}
我们只需要统计奖品类型reward返回的字段
2、提取json数据
1)添加正则表达式
引用名称:reward(此处可自定义)
其中正则表达式的内容是否正确,可以先自己测试一把,即运行之后在察看结果树里面可以看到一个http请求,选择RegExp Tester,在Regular expression里面输入正则表达式,可以看见返回的结果是否正确
2)查看正则表达式的返回结果,可在线程组-添加Debug Sampler,运行之后可选择Debug Sampler 查看正则表达式的返回结果
3)正则表达式可以正确返回,所以我们正则表达式引用的名称 reward可以作为一个变量,可在其他地方输入${reward}来引用
3、java请求
使用正则表达式已经提取到奖品类型reward字段,再作为参数提供给java请求,按照log+返回奖品类型命名文件,把同一个返回类型保存到同一个文件里面,reward有n个返回类型,就保存n个文件
eclipse中新建jmeter相关java类,有需要 用到jmeter相关的jar包,所以需要将截图下的两个jar导入到eclipse中
如下两个新建的java类,参考网址:http://www.cnblogs.com/testway/articles/6663910.html
1)新建一个java类AppendFile 功能是往文件中追加内容
package editFile;
import java.io.IOException;
import java.io.RandomAccessFile;
public class AppendFile {
public static void main(String[] args) {
AppendFile.appendFile("E:\\dd.txt", "1111");
AppendFile.appendFile("E:\\dd.txt", "11111");
}
public static void appendFile(String fileName, String content) {
try {
// 打开一个随机访问文件流,按读写方式
RandomAccessFile randomFile = new RandomAccessFile(fileName, "rw");
// 文件长度,字节数
long fileLength = randomFile.length();
// 将写文件指针移到文件尾。
randomFile.seek(fileLength);
randomFile.writeBytes(content + "\r\n");
randomFile.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
2)新建一个java请求类WriteResult ,作用是从jmeter获取奖品类型reward,并使用返回类型 写入文件
package editFile;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;
public class WriteResult implements JavaSamplerClient {
private SampleResult results;
private String reward;
private String threadNumber;
// 设置从jmeter传入参数
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("reward", "${reward}");// 设置reward参数 ---此处的${reward}参数即正则表达式提取参数命名的变量名
return params;
}
// 初始化方法,性能测试时只执行一次
public void setupTest(JavaSamplerContext arg0) {
}
// 重复执行测试的地方
public SampleResult runTest(JavaSamplerContext arg0) {
reward = arg0.getParameter("reward"); // 获取jmeter传入的参数值,
results = new SampleResult();
results.sampleStart();// jmeter 开始统计响应时间标记
AppendFile.appendFile("E:\\jmeter\\log"+ reward + ".txt", reward);
if(reward.length() ==1){
results.setSuccessful(true);
results.setResponseData("reward:"+reward, null);
}else{
results.setSuccessful(false);
results.setResponseData("获取失败 ", null);
}
results.sampleEnd();// jmeter 结束统计响应时间标记
return results;
}
// 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行
public void teardownTest(JavaSamplerContext arg0) {
}
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
3)把java项目文件导出jar包,放在jmeter 的lib/ext 文件夹中,打开jmeter添加一个jmeter 的java请求,选中测试类,会自动显示reward参数(这个参数是在java请求类WriteResult 的方法中设置:
public Arguments getDefaultParameters()
params.addArgument("reward", "${reward}");
4、使用10个线程循环50次,可在本地保存路径下面看到保存的结果追加文件:
选择其中一个文件打开,http请求返回的同类型全部保存在同一个类型文件里面
相关文章推荐
- Java读取json文件并对json数据进行读取、添加、删除与修改操作
- JMeter 如何把上一个请求的结果作为下一个请求的参数 —— 使用正则提取器
- 页面使用$.getJSON只获取一次数据,导致多个请求返回的都是第一个结果
- 一个来将返回的 JSON 数据自动生成 Java 对象的工具
- Java请求一个URL。获取网站返回的数据。
- 【笔试】超大文件里的数据去重排序;将log中MAC地址提取出来;取出数据库表T里第20行到29行的数据;如何判断一个二叉树B是不是二叉树A的子树?
- Jmeter-BeanShell PostProcessor提取请求及响应结果并保存到本地文件
- jmeter http请求 正则表达式提取器 java请求 高手教程
- Java请求一个URL,获取返回的数据
- jmeter 提取java请求的response数据
- java 通过发送json,post请求,返回json数据
- 实习第一天——做一个录音上传服务器的小功能pttp协议post发送文件和参数到服务器,解析返回的json数据
- list集合转换成json数据,ajax请求返回json数据,再通过循环显示出来
- 关于对发送HTTP请求以及解析服务器返回的数据操作的提取到一个公共类中进行封装
- android学习笔记---1.为应用添加新的Activity,中使用Intent(意图),结果码,请求码,得到新打开Activity 关闭后返回的数据,Bundle类的作用
- ext异步请求一个aspx/ashx/web service取得数据,服务端返回一个json.然后客户端接收并显示.
- Java请求一个URL。获取网站返回的数据。
- android菜鸟学习笔记25----与服务器端交互(二)解析服务端返回的json数据及使用一个开源组件请求服务端数据
- JAVA 请求http接口返回json数据解析
- 细雨学习笔记:Jmeter上一个请求的结果作为下一个请求的参数--使用正则提取器