MeterSphere(基于JMeter)常用断言汇总

  • JSONPath方式断言

    {"success": true,"errCode": null,"errMessage": null,"statDate":"6月28日","data": [{"name": "人口","value": "1","unit": "万人","rateName": "","rateValue": null,"statDateStr": "截至6月27日","dataSource": "百度","detailFlag": false,}],"notEmpty": true,"empty": false
    }
    
    • JSON取数据(页面点击)

在这里插入图片描述

  • 手工写入:

    . s u c c e s s 、 .success、 .success.data[0].value、$.data[-1].value

  • 正则断言

    正整数:\d+$、正浮点数:^\d+(\.\d+)?$、浮点数:(\+|\-)?\d+(\.\d+)?$

  • beanshell脚本断言

    • beanshell中获取系统变量

      // 外部定义 cur_date变量为”6月28日“
      String app_date = "6月28日";
      if(app_date.equals("${cur_date}")){log.info(app_date_str);
      }
      
    • beanshell中通过内置函数获取日期

      # 定义变量时可用
      ${__timeShift(yyyy-MM-dd,,,,)} # 当前时间,输出格式为2023-06-28格式
      ${__timeShift(MM月dd日,,,,)} # 当前时间,输出格式为X月X日,用0补充
      ${__timeShift(M月d日,,,,)} # 当前时间,输出格式为X月X日,不用0补充
      ${__timeShift(M月d日,,PT8h,,)} # 当前8小时后时间,输出格式为X月X日,不用0补充
      
    • beanshell中通过代码获取日期

      import java.text.SimpleDateFormat;
      import java.util.Calendar;
      import java.util.Date;
      import org.json.*;
      Date date = new Date(); // 获取当前日期
      SimpleDateFormat sf = new SimpleDateFormat("M月"); // 定义输出格式
      Calendar calendar = Calendar.getInstance();
      calendar.setTime(date);
      date = calendar.getTime();
      String cur_month = sf.format(date);  // 输出当前日期月,”6月“
      calendar.add(Calendar.MONTH,-1); // 向前推一个月
      date = calendar.getTime();
      String last_month = sf.format(date); // 输出当前日期前一个月,”5月“
      
    • 取接口返回JSON数据

      import org.json.*;
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      String response_data = prev.getResponseDataAsString(); // 以String形式返回接口响应内容
      
    • 取层级json数据

      import org.json.*;
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      String response_data = prev.getResponseDataAsString();
      JSONObject data_obj = new JSONObject(response_data); // 将String类型转换为JSON格式
      String apps_str = data_obj.get("data").get("statDate").toString();// 取样例中"6月28日"。
      
    • 取层级多维json数据

      import org.json.*;
      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      String response_data = prev.getResponseDataAsString();
      JSONObject data_obj = new JSONObject(response_data);
      String apps_str = data_obj.get("data").toString();
      JSONArray apps_array = new JSONArray(apps_str); // 取data下列表内容
      String[] result = new String[apps_array.length()];
      date_origin = "";
      for(int i = 0; i < apps_array.length(); i++){ // 逐项遍历data下内容JSONObject app_obj = new JSONObject(apps_array.get(i).toString());// 将每项内容再转换为json形式String name = app_obj.get("name").toString();if(name.equals("人口")){date_origin = app_obj.get("statDateStr").toString(); // 获取name为人口项的"截至6月27日"}
      }
      String pattern = "截至\\\d+月\\\d+日";
      Pattern r = Pattern.compile(pattern);
      Matcher matcher = r.matcher(date_origin);
      String app_date = "";
      if(matcher.find()){app_date = matcher.group(0).substring(2); // 取期望的”6月27日“
      }
      
    • beanshell中使用正则表达式

      import java.util.regex.Matcher;
      import java.util.regex.Pattern;
      //从”截至6月27日“取"6月27日"
      String data_origin = "截至6月27日"
      String pattern = "截至\\d+月\\d+日";
      Pattern r = Pattern.compile(pattern);
      Matcher matcher = r.matcher(date_origin);
      String app_date = "";
      if(matcher.find()){app_date = matcher.group(0).substring(2); // 取第2个字符及以后数据
      }
      log.info(app_date); // 输出”6月27日“
      
    • beanshell中进行断言及输出内容

      // 假设cur_date为外部配置的变量
      // 假设app_date = "6月28日”
      if(app_date.equals("${cur_date}"))
      {log.info(app_date);AssertionResult.setFailure(false); // 设置断言成功
      }else{AssertionResult.setFailure(true);  // 设置断言失败AssertionResult.setFailureMessage("更新时间不及时,"+app_date); // 设置断言失败提示
      }
      

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/5552.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安装 Prometheus 指标存储 观测 dubbo /windows_exporter指标 windows 版本 其他系统换个语法思路一样

目录 下载 Prometheus 访问Prometheus Targets 发现服务 对应的 dubbo 指标就出来了 Dubbo脚手架生成个最简单的项目 导入 Prometheus 相关包 或者使用这个包即可 启动后就自动上报指标了 Windows_exporter or node_exporter 端口 9182 Prometheus 配置 windows_exp…

『手撕 Mybatis 源码』11 - 二级缓存

二级缓存 概述 启用二级缓存需要进行三步配置 开启映射器配置文件中的缓存配置 <settings><!--cacheEnabled值默认就为true--><setting name"cacheEnabled" value"true"/></settings>在需要使用二级缓存的 Mapper 配置文件中配…

【嵌入式Qt开发入门】在Ubuntu下编写C++

在 Ubuntu 上面编写 C&#xff0c;本文内容主要介绍在 Ubuntu 在终端窗口下使用 vi/vim 编辑一 个 C源文件。通过编写最简单的示例“Hello,World&#xff01;”。带领大家学习如何在 Ubuntu 终端下编辑和编译 C。这里要求大家会在 Ubuntu 上使用 vi/vim&#xff0c;也就是要求大…

迪赛智慧数——柱状图(象形动态图):高考填报专业考虑的因素

效果图 填报志愿是高考后的一大重要环节&#xff0c;你的职业生涯就在这里起航了。那么&#xff0c;应该怎么填报志愿呢&#xff1f;高考填报专业考虑的因素很多&#xff0c;过半的人会考虑专业就业前景及薪资&#xff0c;其次是个人兴趣和是否为双一流建设学科。 数据源&…

Andriod 开发 SearchView默认弹出软键盘

SearchView默认弹出软键盘&#xff0c;遮挡了主界面 这很明显是SearchView是默认自动获取了焦点&#xff0c;所以上网搜了一下如何清除焦点&#xff1a; SearchView searchView getActivity().findViewById(R.id.searchViewSearchbar); searchView.clearFocus(); 然而没用&…

Android 安卓开发语言kotlin与Java该如何选择

一、介绍 如今在Android开发中&#xff0c;应用层开发语言主要是Java和Kotlin&#xff0c;Kotlin是后来加入的&#xff0c;主导的语言还是Java。kotlin的加入仿佛让会kotlin语言的开发者更屌一些&#xff0c;其实不然。 有人说kotlin的引入是解决开发者复杂的逻辑&#xff0c;并…

【xss漏洞-svg标签】详解svg标签+触发XSS

目录 一、理论知识 SVG标签的使用 二、实战部分 一、理论知识 SVG标签的使用 代码中的SVG标签和onload事件本身并不依赖于其他特定的标签来触发弹窗。无论它们被放置在哪个标签内&#xff0c;只要浏览器解析并加载了这个SVG标签&#xff0c;onload事件就会被触发。 注&am…

GO web开发

go web开发 简介 go官方提供了http服务&#xff0c;但它的功能很简单。 这里介绍web开发中的一些问题&#xff0c;和web框架&#xff08;echo&#xff09;怎么解决这些问题 &#xff0c;对于具体的echo的使用&#xff0c;可看官网 官网&#xff1a; https://echo.labstack…

Redis 高可用 RDB AOF

---------------------- Redis 高可用 ---------------------------------------- 在web服务器中&#xff0c;高可用是指服务器可以正常访问的时间&#xff0c;衡量的标准是在多长时间内可以提供正常服务&#xff08;99.9%、99.99%、99.999%等等&#xff09;。 但是在Redis语境…

MATLAB App Designer基础教程 Matlab GUI入门(一)

MATLAB GUI入门 第一天 学习传送门&#xff1a; 【MATLAB App Designer基础教程Matlab GUI界面设计&#xff08;全集更新完毕-用户界面设计appdesigner&#xff08;中文&#xff09;Matlab Gui教程】 https://www.bilibili.com/video/BV16f4y147x9/?p2&share_sourcecopy_…

区块链运行原理

文章目录 前言区块链的结构区块链的交易过程区块链的共识机制区块链交易存在的问题特性总结 前言 上文《认识区块链》中可以知道区块链是一个通过各种加密算法、共识机制以及其他技术可以实现一个点对点的电子现金系统&#xff0c;从而达到去第三方的效果&#xff08;通常称之…

基于深度学习的高精度老虎检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度老虎检测识别系统可用于日常生活中或野外来检测与定位老虎目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的老虎目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5目标检测模型…