http返回的数据是json格式 jmeter怎么断言

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了http返回的数据是json格式 jmeter怎么断言相关的知识,希望对你有一定的参考价值。

麻烦大神详细点,谢谢

如我们要断言返回值的json中

"name":"Simpsons family","members":["firstName":"Homer", "lastName":"Simpson","firstName":"Marge", "lastName":"Simpson","firstName":"Bart", "lastName":"Simpson","firstName":"Lisa", "lastName":"Simpson","firstName":"Maggie", "lastName":"Simpson"]

中members的第三条firstName的值等于Bart

则添加一个jp@gc - JSON Path Assertion断言

JSON Path 输入框填写$.members[2].firstName

Expected Value 输入框填写 Bart

    超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。

    1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted Nelson组织协调万维网协会(World Wide Web Consortium)和互联网工程工作小组(Internet Engineering Task Force )共同合作研究,最终发布了一系列的RFC,其中著名的RFC 2616定义了HTTP 1.1。

参考技术A 如我们要断言返回值的json中


  "name":"Simpsons family",
  "members":[
  "firstName":"Homer", "lastName":"Simpson",
  "firstName":"Marge", "lastName":"Simpson",
  "firstName":"Bart", "lastName":"Simpson",
  "firstName":"Lisa", "lastName":"Simpson",
  "firstName":"Maggie", "lastName":"Simpson"
  ]
  
中members的第三条firstName的值等于Bart
则添加一个jp@gc - JSON Path Assertion断言
JSON Path 输入框填写$.members[2].firstName
Expected Value 输入框填写 Bart

贴不进来图真不知道为啥,只能这样对付看吧本回答被提问者采纳
参考技术B

  Json 作为一种数据交换格式在网络开发,特别是 Ajax 与 Restful 架构中应用的越来越广泛。而 Apache 的 JMeter 也是较受欢迎的压力测试工具之一,但是它本身没有提供对于 Json 数据的响应处理。本文中假设需要从 HTTP 的响应头中返回的 Json 格式的数据流中抽取某些特定的数据,数据格式如下:

  

  "name":"Simpsons family",

  "members":[

  "firstName":"Homer", "lastName":"Simpson",

  "firstName":"Marge", "lastName":"Simpson",

  "firstName":"Bart", "lastName":"Simpson",

  "firstName":"Lisa", "lastName":"Simpson",

  "firstName":"Maggie", "lastName":"Simpson"

  ]

  

  下面我们使用不同的方法来进行数据的抽取工作:

  正则表达式提取

  JMeter 安装了正则表达式插件之后,可以按照固定的格式从字符串中提取数据,而本例中正则表达式如下所示:

  "firstName":"(.+?)"

  使用了该表达式之后会返回所有服从表达式的字符串,但是只有一个表达式是我们所关注的。可以使用$1$ 来作为模板,而 3 则会返回第三个数据。

  当偶尔需要对Json数据进行处理时,正则表达式是一个合适的选择,它的一个优势在于JMeter本身就内置了Json处理模块。但是,阅读处理正则表达式却是比较复杂的,特别是对于某些复杂的Json数据。

  JMeter JSON 插件

  另一种处理 Json 数据的方法是使用 JMeter 的插件,该插件可以使用 JSONPath 来获取 JSON 数据中特定位置的数据。类似于 XML 文件中的 XPath , JSONPath 可以使用简单的表达式来操作 Json 对象。 JSON Path Extractor 是一个开源的增加了 post处理器的插件,可以将该插件的 Lib 文件拷贝到 JMeter 的 lib 目录下即可。

  而上文中提及的需要定位的数据可以使用如下的JSONPath 进行描述:

  $.members[2].firstName

  在 JMeter 中,只需要从 PostProcessor 菜单中打开 JSON Path Extractor 然后输入变量名与默认值即可,如下所示:

  


  JSONPath 表达式较短并且易于阅读,能够有效提高测试脚本的易维护性,该插件并不随着标准的 JMeter 一起安装。

  BeanShell Post Processor

  最后一种方法即是借用了 JMeter 的对于 BeanShell 支持的特性, BeanShell 是一个轻量级的面向 Java 的脚本语言。 BeanShell Post Processor 允许使用标准的 Java 语法来处理 Json 数据,使用方法如下图所示:

  


  总结

  本文列举出了三种可用的从 Json 格式的返回值中提取数据的方法,正则表达式对于简单的 Json 格式的数据的快速标准化非常占优势。而 JsonPath 插件可以用于创建能够被维护修改的脚本,但是需要额外的插件安装工作。而最后的带 JSON 库的BeanShell 确实非常详细并且依赖于 Java 语言的灵活性可以进行进一步的开发。

追问

这个我都看了好几遍了,详细点行吗

PHP是怎么返回json格式的数据

php 输出JSON格式,使用json_encode函数即可
例如:
<?php
header('Content-type: text/json');
$fruits = array (
"fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>
得到结果:
"fruits":"a":"orange","b":"banana","c":"apple","numbers":[1,2,3,4,5,6],"holes":"0":"first","5":"second","6":"third"

试试看看上面的方法可以不
参考技术A php 输出JSON格式,使用json_encode函数即可
例如:
<?php
header('Content-type: text/json');
$fruits = array (
"fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"),
"numbers" => array(1, 2, 3, 4, 5, 6),
"holes" => array("first", 5 => "second", "third")
);
echo json_encode($fruits);
?>
得到结果:
"fruits":"a":"orange","b":"banana","c":"apple","numbers":[1,2,3,4,5,6],"holes":"0":"first","5":"second","6":"third"

以上是关于http返回的数据是json格式 jmeter怎么断言的主要内容,如果未能解决你的问题,请参考以下文章

使用jmeter做接口测试,怎么验证,核对响应结果中json的内容

jmeter怎么设置json格式的请求

JMeter中返回Json数据的处理方法

JMeter中返回Json数据的处理方法

jmeter的参数关联(参数依赖)

JMeter 返回Json数据提取方法