首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过案例带你轻松玩转JMeter连载(35)

通过案例带你轻松玩转JMeter连载(35)

作者头像
顾翔
发布2021-12-01 20:16:14
3560
发布2021-12-01 20:16:14
举报

4 JOSN提取器和JSON JMSPath提取器比较 为了更好让大家理解JOSN提取器和JSON JMSPath提取器,我们在网上建立一个JSON文件food.json。内容如下。

{
"store": {

"food": [

{

"category": "零食",

"name": "黄飞鸿花生",

"desc": "黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米",

"price":28.8

},

{

"category": "零食",

"name": "良品铺子",

"desc": "良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃",

"date":"2022-2-4",

"price":108.00

},

{

"category": "零食",

"name": "三只松鼠每日坚果",

"desc": "三只松鼠每日坚果 750g/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果",

"price":149.00

},

{

"category": "零食",

"name": "百草味",

"desc": "百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g/箱",

"price":34.9

},

],

"book": {

"name": "全栈软件测试工程师宝典",

"author": "顾翔",

"price": 168.00

}

},

"expensive": 70

}

1)把放到Tomcat服务器中 2)建立一个HTTP请求,如图29所示(本节的内容见本书配套代码json.jmx)。

图29 food.json TTP请求

3)建立JSON提取器,如图30所示。

图30 food.json JSON提取器

  • Names of created variables:var1;var2;var3;var4;var5;var6;var7;var8;var9;var10;var11;var12。
  • JSON Path Expressions:.store.food[∗].name;..name;.store.∗;.store..price;..food[3];..food[-3];..food[1,2];..food[1:3];..food[−3:];..food[?(@.date)];..food[?(@.price<100)];..food[?(@.price<=$['expensive'])]。
  • Match No. (0 for Random):-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1;-1。
  • Default Values:null;null;null;null;null;null;null;null;null;null;null;null。

4)然后得到如下结果。

var10_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}
var10_matchNr=1

var11_1={"name":"黄飞鸿花生","category":"零食","price":28.8,"desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米"}

var11_2={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}

var11_matchNr=2

var12_1={"name":"黄飞鸿花生","category":"零食","price":28.8,"desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米"}

var12_2={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}

var12_matchNr=2

var1_1=黄飞鸿花生

var1_2=良品铺子

var1_3=三只松鼠每日坚果

var1_4=百草味

var1_matchNr=4

var2_1=黄飞鸿花生

var2_2=良品铺子

var2_3=三只松鼠每日坚果

var2_4=百草味

var2_5=全栈软件测试工程师宝典

var2_matchNr=5

var3_1=[{"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8},{"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0},{"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0},{"category":"零食","name":"百草味","desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱","price":34.9}]

var3_2={"name":"全栈软件测试工程师宝典","author":"顾翔","price":168.0}

var3_matchNr=2

var4_1=28.8

var4_2=108.0

var4_3=149.0

var4_4=34.9

var4_5=168.0

var4_matchNr=5

var5_1={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}

var5_matchNr=1

var6_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}

var6_matchNr=1

var7_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}

var7_2={"name":"三只松鼠每日坚果","category":"零食","price":149.0,"desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果"}

var7_matchNr=2

var8_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}

var8_2={"name":"三只松鼠每日坚果","category":"零食","price":149.0,"desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果"}

var8_matchNr=2

var9_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}

var9_2={"name":"三只松鼠每日坚果","category":"零食","price":149.0,"desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果"}

var9_3={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}

var9_matchNr=3

5)建立如表3对应表格。 表3 food.json JSON提取器获取数据

JSON Path

含义

$.store.food[*].name

var1_1=黄飞鸿花生var1_2=良品铺子var1_3=三只松鼠每日坚果var1_4=百草味var1_matchNr=4

所有food的name值

$..name

var2_1=黄飞鸿花生var2_2=良品铺子var2_3=三只松鼠每日坚果var2_4=百草味var2_5=全栈软件测试工程师宝典var2_matchNr=5

所有的name值

$.store.*

var3_1=[{"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8},{"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0},{"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0},{"category":"零食","name":"百草味","desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱","price":34.9}]var3_2={"name":"全栈软件测试工程师宝典","author":"顾翔","price":168.0}var3_matchNr=2

store内所有的数据

$.store..price

var4_1=28.8var4_2=108.0var4_3=149.0var4_4=34.9var4_5=168.0var4_matchNr=5

所有的价格

$..food[3]

var5_1={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}var5_matchNr=1

标号为3的food数据(第一个标号为)

$..food[-3]

var6_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}var6_matchNr=1

倒数第3个food数据

$..food[1,2]

var7_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}var7_2={"name":"三只松鼠每日坚果","category":"零食","price":149.0,"desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果"}var7_matchNr=2

标号为1到2的food数据

$..food[1:3]

var8_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}var8_2={"name":"三只松鼠每日坚果","category":"零食","price":149.0,"desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果"}var8_matchNr=2

标号为1和2的food数据(不含3)

$..food[-3:]

var9_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}var9_2={"name":"三只松鼠每日坚果","category":"零食","price":149.0,"desc":"三只松鼠每日坚果 750g\/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果"}var9_3={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}var9_matchNr=3

倒数3个food数据

$..food[?(@.date)]

var10_1={"name":"良品铺子","date":"2022-2-4","category":"零食","price":108.0,"desc":"良品铺子 经典坚果礼盒8袋装\/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃"}var10_matchNr=1

含有date属性的food数据

$..food[?(@.price<100)]

var11_1={"name":"黄飞鸿花生","category":"零食","price":28.8,"desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米"}var11_2={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}var11_matchNr=2

价格小于100的food数据

$..food[?(@.price<=$['expensive'])]

var12_1={"name":"黄飞鸿花生","category":"零食","price":28.8,"desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米"}var12_2={"name":"百草味","category":"零食","price":34.9,"desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g\/箱"}var12_matchNr=2

价格小于expensive 的food数据

6)建立JSON JMSPath提取器,如图31所示。

图31 JSON JMSPath提取器

由于JSON JMSPath提取器一次只能输入一个JSON JMSPath表达式,所以我们只能一建立多个提取器。在树状图“JSON JMESPath Extractor1”右击鼠标,在弹出菜单中选择“复写”,使用相同的方法建立12个JSON JMSPath提取器;名称分别为:JSON JMESPath Extractor2、JSON JMESPath Extractor3hellip;JSON JMESPath Extractor12。变量分别为:v1、v2hellip;v12;表达式分别为:store.food[].name、store.、store.[book.price,food[].price]、store.food [2]、store.food [-2]、store.food [:2]、store.food [1:2]、store.food [-2:]、store.food [?(@.date)]、length(store.food [*])、max_by(store.food, &price).name和min_by(store.food, &price)。 7)运行得到如下结果。

v10_1=4
v10_matchNr=1

v11_1=三只松鼠每日坚果

v11_matchNr=1

v12_1={"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8}

v12_matchNr=1

v1_1=黄飞鸿花生

v1_2=良品铺子

v1_3=三只松鼠每日坚果

v1_4=百草味

v1_matchNr=4

v2_1=[{"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8},{"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0},{"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0},{"category":"零食","name":"百草味","desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g/箱","price":34.9}]

v2_2={"name":"全栈软件测试工程师宝典","author":"顾翔","price":168.0}

v2_matchNr=2

v3_1=168.0

v3_2=[28.8,108.0,149.0,34.9]

v3_matchNr=2

v4_1={"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 
中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0}

v4_matchNr=1

v5_1={"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 
中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0}

v5_matchNr=1

v6_1={"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8}

v6_2={"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0}

v6_matchNr=2

v7_1={"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0}

v7_matchNr=1

v8_1={"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 
中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0}

v8_2={"category":"零食","name":"百草味","desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g/箱","price":34.9}

v8_matchNr=2

v9_1={"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0}

v9_matchNr=1

8)同样将结果汇集以下。如表4所示。 表4 food.json JSON JMSPath提取器获取数据

JSON JMSPath

含义

store.food[*].name

var_1=黄飞鸿花生var_2=良品铺子var_3=三只松鼠每日坚果var_4=百草味var_matchNr=4

所有food的名称

store.*

var_1=[{"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8},{"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0},{"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0},{"category":"零食","name":"百草味","desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g/箱","price":34.9}]var_2={"name":"全栈软件测试工程师宝典","author":"顾翔","price":168.0}var_matchNr=2

store包含的所有分类数据

store.[book.price,food[*].price]

var_1=168.0var_2=[28.8,108.0,149.0,34.9]var_matchNr=2

所有商品的价格

store.food [2]

var_1={"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0}var_matchNr=1

标号为2的food数据(从0开始)

store.food [-2]

var_1={"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0}var_matchNr=1

倒数第2个food数据

store.food [:2]

var_1={"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8}var_2={"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0}var_matchNr=2

前2个food的数据

store.food [1:2]

var_1={"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0}var_matchNr=1

索引1(包括)到索引2(不包括)的food的数据

store.food [-2:]

var_1={"category":"零食","name":"三只松鼠每日坚果","desc":"三只松鼠每日坚果 750g/30袋 中秋送礼坚果礼盒零食大礼包儿童孕妇节日混合干果腰果夏威夷果核桃仁开心果","price":149.0}var_2={"category":"零食","name":"百草味","desc":"百草味 休闲零食小吃整箱蛋糕办公室早餐手撕面包点心传统糕点 原味肉松饼1000g/箱","price":34.9}var_matchNr=2

最后2个food的数据

store.food [?(@.date)]

var_1={"category":"零食","name":"良品铺子","desc":"良品铺子 经典坚果礼盒8袋装/1310g食食有爱 每日坚果干果休闲零食坚果炒货零食大礼包节日送礼夏威夷果核桃","date":"2022-2-4","price":108.0}var_matchNr=1

包含date属性的数据

length(store.food [*])

var_1=4var_matchNr=1

所有food种类的数量

max_by(store.food, &price).name

var_1=三只松鼠每日坚果var_matchNr=1

价格最高的food名称

min_by(store.food, &price)

var_1={"category":"零食","name":"黄飞鸿花生","desc":"黄飞红 麻辣花生210g*2袋 每日坚果炒货休闲网红囤货零食小吃下酒菜花生米","price":28.8}var_matchNr=1

价格最低的food信息

最后我们对比一下JSON JMESPath Extractor与JOSN提取器。

  • 一个JOSN提取器可以通过英文分号分离的方式,提取多个变量表达式。
  • JSON JMESPath Extractor一次只可以提取一个变量,如果要提取多个变量,那么就需要添加多个JSON JMESPath Extractor。
  • JOSN提取器不支持函数,JSON JMESPath Extractor支持使用函数length()、max_by()和min_by()。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-11-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件测试培训 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档