一天一个关于测试知识点,5分钟内讲解你最关心的软件测试问题,今天就接着来谈谈关于软件测试中的“JMeter关联之JSON提取器”。
1、JSON提取器
若响应数据格式为JSON,也可以用JSON提取器来提取需要关联的数据。
▲ 配置项
Apply to:
与正在表达式提取器中用法相同,不再赘述。
Names of created variables:
将JSONPath提取的内容保存到指定变量,多个变量之间用“;”分隔(注意不是用,号)。
JSON Path expressions:
用于提取响应数据的JSONPath表达式,多个JSONPath表达式之间用“;”分隔(注意不是用,号)。
Match No.(0 for Random):
若JSONPath有多个匹配项,可以选择提取哪个匹配项。
0表示随机(默认值)
-1表示提取所有匹配项,各匹配项可用var_1,var_2,var_3,... ,var_n表示(var为保存提取内容的变量名)
i(i=1,2,3,...)表示第i个匹配项,若X大于匹配总数,在设置了缺省值的情况下返回缺省值,否则返回空。
Compute concatenation var (suffiffiffix _ALL):
勾选此选项,若JSONPath返回多个匹配项,则将各匹配项连接起来保存在var_ALL的变量中,其中var为保存提取内容的变量名。
Default Values:
若JSONPath没有返回任何结果,则显示设置的缺省值。注意缺省值可以不设置,一旦设置,需要为每个变量设置缺省值,多个缺省值之间用“;”分隔(注意不是用,号)。
2、应用案例
沿用上面的例子。
其实上例中第二步骤:设置查询条件(比如按商品品牌)搜索商品,响应数据为JSON,也可以使用JSON提取器提取数据。
{
"error": 0,
"message": "",
"content": "<!-- $Id: goods_list.htm 17126 2010-04-23 10:30:26Z liuhui $ -- >\r\n\r\n<table cellpadding= ... <\/table>\r\n\r\n",
"filter": {
"cat_id": 0,
"intro_type": "",
"is_promote": 0,
"stock_warning": 0,
"brand_id": 0,
"keyword": "",
"suppliers_id": "",
"is_on_sale": "",
"sort_by": "goods_id",
"sort_order": "DESC",
"extension_code": "",
"is_delete": 0,
"real_goods": 1,
"record_count": "20",
"page_size": 15,
"page": 1,
"page_count": 2,
"start": 0
},
"page_count": 2
}
现在要从响应数据中提取错误代码,错误消息,返回内容三部分数据,JSON提取器设置如下: