ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Jmter中的断言

2022-05-16 01:34:23  阅读:189  来源: 互联网

标签:10 断言 Jmter get 响应 json stock


before

win 10 + jmeter 5.2.1

本篇来学习在JMeter中常用断言:

  • 响应断言
  • 大小断言
  • json断言
  • beanshell断言

来看看都是怎么用的。

响应断言

http://www.neeo.cc:6001/get?stock=10   # get

来,新建一个线程组,添加两个"HTTP请求"取样器,配置如下,其实两个配置一样的........

来看如何添加响应断言:

重要的参数说明:

  • Apply to,保持默认吧
  • Field to Test,断言的内容来自于:
    • Test Response响应体
    • Response Code响应状态码
    • Response Message响应信息
    • Response Headers响应头
    • Request Headers请求头
    • Request Data请求体
    • URL Sampled请求的URL
  • Patterns Matching Rules,断言(匹配)规则:
    • Container:响应文本中是否包含某个字段值,支持正则
    • Matches:响应文本是否完全匹配预期值,支持正则
    • Equals:响应文本是否完全匹配预期值,不支持正则
    • Substring:响应文本中是否包含某个字段值,不支持正则
  • Patterns to Test,编写你的断言
  • Custom failure message,自定义的断言失败信息

你可以根据具体的场景来写的断言。

这里我们为第一个请求添加断言,配置如下:

上面两个断言结果,一个成功,一个失败。

再来看第二个请求的断言配置:

最终的"察看结果树"的执行结果:

大小断言

http://www.neeo.cc:6001/get?stock=10   # get

来看"HTTP请求"配置和执行结果:

我们从"察看结果树"中得到2个数据,接下来使用大小断言来进行判断:

来看两个"大小断言"的配置:

"大小断言"的各个参数读起来一点不难,我也不用再说了,大家一看就懂;断言结果肯定都通过,我也不贴图了!

json断言

如果响应体是json类型的话,断言使用"json断言"比"响应断言"更方便。

http://www.neeo.cc:6001/get?stock=10   # get

# 响应结果
{
  "args": {
    "stock": "10"
  }, 
  "headers": {
    "Connection": "keep-alive", 
    "Host": "www.neeo.cc:6001", 
    "User-Agent": "Apache-HttpClient/4.5.10 (Java/1.8.0_201)"
  }, 
  "origin": "222.35.243.75", 
  "url": "http://www.neeo.cc:6001/get?stock=10"
}

"json断言"内部对json路径及值的判断,可以参考json-path/JsonPath,一路点下去就行了,这里不存在同级路径下key重复的问题。

在线程组内添加"HTTP请求",配置和结果如下:

再来看如何添加"json断言":

看看怎么配置:

json断言相当的简单,就是判单之指定的路径下是否存在指定的key,顶多给同时判断key对应的value是否等于某个值。

beanshell断言

在beanshell中有个内置变量Failure boolean(false表示断言成功,true表示断言失败)变量,用来控制断言,断言失败使用FailureMessage显示失败日志。

来个需求,如下接口:

/pinter/com/getSku   # get请求  参数:id=1

# 返回
{"code":"0","message":"success","data":{"skuId":523,"skuName":"ptest-523","price":"912","stock":649,"brand":"testfan"}}

判断,如果返回的stock值大于等于500断言成功,否则失败。

新建一个线程组,并设置1个线程循环3次,添加一个HTTP取样器,然后配置后置json提取器,提取stock值:

现在,是时候来个beanshell断言了啊:

上代码:

prev.setDataEncoding("utf-8");  // 如果响应乱码,就添加这一行
// 获取json提取器中提取的stock值
String mystock = vars.get("stock");
// 转下类型
int intstock = Integer.parseInt(mystock);
// beanshell断言
if (intstock >= 500){
	Failure = false;  // 断言成功
}else{
	Failure = true;  // 断言失败
    // 自定义断言信息
	FailureMessage = "断言失败,stock值是: "+mystock;
};

配置和结果如下:

beanshell断言就这么简单!

标签:10,断言,Jmter,get,响应,json,stock
来源: https://www.cnblogs.com/TodayWind/p/16275449.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有