1:Json后置处理器提取结果作为下一个sampler的传入参数

1.1:【线程组】->【简单控制器】->【HTTP sampler】->【Beanshell后置取样器】->【查看结果树】

1.2:Beanshell后置取样器获取HTTP请求1所有响应数据returnData和其中单独的数据

log.info(returnData)可以在Log中输出returnData的值

1.4:添加第二个sampler

1.5:查看结果树 HTTP请求1的响应数据作为HTTP请求2的POST Data传入服务器

2:Beanshell对Json数据的增删改查

2.1:Beanshell后置处理器对响应数据的查询

2.1.1:eclipse的httpclient获取接口返回数据

Maven导入的Jar包

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.5</version>
</dependency>

package Test.Json;

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import org.junit.Test;

import com.alibaba.fastjson.JSONObject;

public class GetJsonData {

private String URL = "http://mobile.weather.com.cn/data/sk/101010100.html";

// Get方法获取 http://mobile.weather.com.cn/data/sk/101010100.html
@Test
public void GetMethodData() {

HttpGet httpGet = new HttpGet(URL);

CloseableHttpClient httpClient = HttpClients.createDefault();

try {
CloseableHttpResponse response = httpClient.execute(httpGet);

int code = response.getStatusLine().getStatusCode();// 获取返回状态码

System.out.println(code);

String returnData = EntityUtils.toString(response.getEntity());// 获取接口返回的text格式数据

System.out.println(returnData);
//======================================================================
// 将text格式数据转换成JSON格式数据
JSONObject jsonObject = JSONObject.parseObject(returnData);
// sk_inf为Json的一个节点 节点下采薇key value键值对
JSONObject data = jsonObject.getJSONObject("sk_info");
System.out.println(data);
//======================================================================
//增
data.put("phone", 110);
System.out.println(data);
//======================================================================
//删除
data.remove("cityName");
//======================================================================
//改
data.put("phone", 120);
//======================================================================
//查询
data.get("phone");

} catch (Exception e) {
System.out.println(e);
}
}
}

2.1.2:Beanshell对响应Json数据的删除

Beanshell后置处理器脚本

//导入Json jar包
import com.alibaba.fastjson.JSONObject;

String returnData = prev.getResponseDataAsString();
log.info(returnData);
//将获取的数据放入 方便下面的sampler取值
JSONObject jsonObject = JSONObject.parseObject(returnData);
JSONObject data = jsonObject.getJSONObject("sk_info");
//eclipse里面不用toString Jmeter中需要
log.info(data.toString());//这里输出有“北京”
data.remove("cityName");
log.info(data.toString());//这里输出没有"北京"

vars.put("returnData",returnData);
vars.put("data",data.toString());//data不是string形式变量 需要toString转换

HTTP请求2

查看结果树

2.1.3:Beanshell对响应Json数据的增

//导入Json jar包
import com.alibaba.fastjson.JSONObject;

String returnData = prev.getResponseDataAsString();
log.info(returnData);
//将获取的数据放入 方便下面的sampler取值
JSONObject jsonObject = JSONObject.parseObject(returnData);
JSONObject data = jsonObject.getJSONObject("sk_info");
//eclipse里面不用toString Jmeter中需要
log.info(data.toString());
data.put("name","Anndy");
log.info(data.toString());//这里输出增加"name":"Anndy"

vars.put("returnData",returnData);
vars.put("data",data.toString());//data不是string形式变量 需要toString转换

2.1.4:Beanshell对响应Json数据的改

//导入Json jar包
import com.alibaba.fastjson.JSONObject;

String returnData = prev.getResponseDataAsString();
log.info(returnData);
//将获取的数据放入 方便下面的sampler取值
JSONObject jsonObject = JSONObject.parseObject(returnData);
JSONObject data = jsonObject.getJSONObject("sk_info");
//eclipse里面不用toString Jmeter中需要
log.info(data.toString());//cityName:北京
data.put("cityName","南京");
log.info(data.toString());//这里输出增加"cityName":"南京"

vars.put("returnData",returnData);
vars.put("data",data.toString());//data不是string形式变量 需要toString转换

2.1.5:Beanshell对响应Json数据的查

//导入Json jar包
import com.alibaba.fastjson.JSONObject;

String returnData = prev.getResponseDataAsString();
log.info(returnData);
//将获取的数据放入 方便下面的sampler取值
JSONObject jsonObject = JSONObject.parseObject(returnData);
JSONObject data = jsonObject.getJSONObject("sk_info");
//eclipse里面不用toString Jmeter中需要
log.info(data.toString());
String city = data.get("cityName");

vars.put("returnData",returnData);
vars.put("city",city);

2.1.6:放入list集合

//导入Json jar包
import com.alibaba.fastjson.JSONObject;

String returnData = prev.getResponseDataAsString();
log.info(returnData);
//将获取的数据放入 方便下面的sampler取值
JSONObject jsonObject = JSONObject.parseObject(returnData);
JSONObject data = jsonObject.getJSONObject("sk_info");
//eclipse里面不用toString Jmeter中需要
log.info(data.toString());
//beanshell不能使用泛型
List list = new ArrayList();
list.add("AAA");
list.add("BBB");
list.add("CCC");
data.put("nameList", list);
//vars只能放入基础类型数据
vars.put("data",data.toString());//data不是基础类型 所以需要转换 否则会报错

原文出处

Jmeter-提取Json数据进行关联的更多相关文章

  1. jmeter之beanshell提取json数据

    Jmeter BeanShell PostProcessor提取json数据 假设现有需求: 提取sample返回json数据中所有name字段对应的值,返回的json格式如下: {“body”:{“ ...

  2. 合并cookie,提取json数据

    发送的第3个请求需要前两个请求的cookie,需要对cookie进行合并 发送的请求数据来自于json数据中的某个键值. 这里是删除所有的对话主题目录,每一个目录有一个id,发起删除对话主题目录的请求 ...

  3. Jmeter BeanShell PostProcessor提取json数据

    需求:提取sample返回json数据中所有name字段值,返回的json格式如下: {“body”:{“apps”:[{“name”:”111”},{“name”:”222”}]}} jmeter中 ...

  4. jmeter之json数据参数化 断言等

    在 http Load Testing 中,json 数据的提交是个让人头疼的问题.本文详细介绍如何进行 JMeter 的 json 测试提交,以及如何将其参数化.Step 1 http json 请 ...

  5. 自动化测试 如何快速提取Json数据

    Json作为一种轻量级的交换数据形式,由于其自身的一些优良特性比如包含有效信息多,易于阅读和解析. 使用Json的场景也很多,比如读取解析系列化的Json格式的数据,我们需要将一个Json的字符串解析 ...

  6. JMeter 返回Json数据提取方法

    JMeter中,对response返回JSON格式的数据进行处理,格式如下: { "code":2000, "message":"success&qu ...

  7. jmeter提取正则表达式中所有关联值-----我想获取所有的ID

    [{ "ID": 1, "Name": "张三" }, { "ID": 2, "Name": &qu ...

  8. JMeter传递JSON数据

    步骤: 1.添加线程组.HTTP请求默认值.察看结果树等参考<JMeter实现bugfree登录接口测试>.这里不再赘述. 2.添加HTTP请求 在Body Data中写上输入的参数.参数 ...

  9. jmeter发送json数据,报405、400错误解决方案

    1.405错误解决方案:添加HTTP信息头管理器(错误因数:发送格式未设置) 2.400错误解决方案:json文本格式有误(注意:换行.空格等)解决方案:对照json文本数据(错误因数:发送的json ...

随机推荐

  1. XML中CDATA和#PCDATA的区别

    在XML文档中, 能看到“CDATA"的地方有三处: 1)在DTD中,指定标签中某个属性的类型为字符型时,使用CDATA.因为XML解析器会去分析这段字符内容,因而里面如果需要使用>, ...

  2. cassandra压缩——从文档看,本质上也应该是在做块压缩

    Compression Compression maximizes the storage capacity of Cassandra nodes by reducing the volume of ...

  3. Yii的缓存机制之动态缓存

    当整个页面被缓存,但只有小部分区域需要根据不同的条件设置不同的信息.(例如商品的详细页面的缓存中用户名是动态的)这里就需要设置动态缓存. 首先在被缓存的模板中使用renderDynamic进行动态渲染 ...

  4. Python:元组

    元组:只读,不能修改,使用小括号 创建元组: tup1 = ('physics', 'chemistry', 1997, 2000) tup2 = (1, 2, 3, 4, 5 ) tup3 = &q ...

  5. Spring cloud基础模块学习

    1.微服务架构构成 单体架构(通过应用集群和数据库集群来提高性能,多余模块存在浪费) 垂直架构(新的功能模块通过新项目来实现,数据库之间存在交叉关联.存在数据冗余,和单体架构一样通过扩展集群结点,成本 ...

  6. ASP.NET Core 2.2 附加的数据文件存放在项目文件夹内

    在ASP.NET 4.x中(包括ASP.NET MVC 5),可以通过附加数据库文件的方式,将数据库保存在项目的文件中.这种方式对于不同时段需要更换计算机(白天办公室,晚上家里)开发时带来好处. 而. ...

  7. 关于git被误删除的分支还原问题

    在开发过程中, 有可能会将正在开发的本地分支误删, 本地分支被删除时, 如果已经将本地分支的变更推送到了远端, 还没有问题, 如果被删除的本地分支只提交了没有推送到远端, 就悲剧了, 相当于在你上一次 ...

  8. CodeForces 1091G. New Year and the Factorisation Collaboration

    题目简述:若你获得“超能力”:固定$n$,对任意$a$,可以快速求出$x \in [0, n)$(若存在),使得$x^2 \equiv a \pmod n$,若存在多个$x$满足条件,则返回其中一个( ...

  9. python常用框架及第三方库

    python常用框架及第三方库 一.Web框架 1.Django: 开源web开发框架,它鼓励快速开发,并遵循MVC设计,比较庞大,开发周期短.Django的文档最完善.市场占有率最高.招聘职位最多. ...

  10. CodeForces - 566D Restructuring Company 并查集的区间合并

    Restructuring Company Even the most successful company can go through a crisis period when you have ...