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

news2024/9/24 17:20:53
  • 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.coloradmin.cn/o/696642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

数字孪生与 GIS 融合为环保领域带来新的变化

在当今日益关注环境保护和可持续发展的时代&#xff0c;数字孪生和 GIS 的融合为环境保护领域带来了巨大的变化。数字孪生是一种以 3D 模型为基础的仿真技术&#xff0c;能够对真实世界进行精确的建模和模拟&#xff0c;而 GIS 则是一种用于收集、管理、分析和可视化地理数据的…

【Uni-app 引入海康h5player并接入ws视频流】

uni-app 海康h5player接入ws视频流 内容简介 采用uni-app中的renderjs 引入海康H5 SDK 后端接入海康综合安防平台的开放API获取预览流 海康H5 SDK 下载地址 接入原因 因在移动端接入不管是hls flv rtsp rtmp流的播放稳定性和速度均很慢&#xff0c;特采用ws直连流来播放&#…

REVIT技巧|一面接一面,叠层墙就是这样堆出来的?

​Revit中有3种墙族&#xff1a;基本墙、幕墙和叠层墙。幕墙定义为由网格和嵌板组成的系统。 基本墙是由从外部到内部的材质层组成的墙。基本墙自底部到顶部的厚度都相同。 叠层墙由相互堆叠的基本墙组成&#xff0c;可以设计具有自底部到顶部厚度不同的墙。 今天&#xff0c…

1.4 MyBatis数据库逆向生成工具

步骤1: mybatis-generator工程 步骤2&#xff1a;修改generatorConfig.xml内容 1.通用mapper所在目录 2.数据库链接 3.对应生成的pojo所在包 4.对应生成的mapper所在目录 5.配置mapper对应的java映射 6.数据库表 具体内容&#xff1a;<!-- 通用mapper所在目录 --> &l…

记录两个不同的域名使用同一个微应用遇到的坑(micro-app)

由于公司的项目越来越多&#xff0c;很多的系统&#xff0c;也有很多相似的模块&#xff0c;为了解决重复造轮子&#xff0c;降低开发维护成本&#xff0c;故将这些抽出来单独作为微应用。经过调研&#xff0c;发现某东出品的micro-app比较吻合。使用过程省略。 在多个项目&am…

Grafana 配置告警 配置 dubbo windows_exporter 报告页面图 其他公共报告可参考相近

目录 安装部署 官网下载 配置中文 启动 访问 账户密码 界面效果 图表操作 新建添加仪表 添加 Prometheus 数据源 导入已有报告示例 下载 windows_exporter Grafana 的图表模板 node_exporter 中文版&#xff1a;windows_exporter for Prometheus Dashboard CN v2…

2023年全网最全接口自动化测试框架搭建,没有之一

一、原理及特点 参数放在XML文件中进行管理 用httpClient简单封装一个httpUtils工具类 测试用例管理使用了testNg管理&#xff0c;使用了TestNG参数化测试&#xff0c;通过xml文件来执行case。 测试报告这里用到第三方的包ReportNG 项目组织用Maven 二、准备 使用工具&am…

期货和现货白银的区别

白银期货和现货白银既有区别&#xff0c;也有联系&#xff0c;它们二者都是以银价跟跟踪对象的保证金交易品种&#xff0c;因此都具有一定的杠杆效应&#xff0c;都可以双向操作&#xff0c;但是它们在交易制度、时间、杠杆水平等诸多方面&#xff0c;都存在明显的区别。 投资者…

为什么你总学不会编程?到底差什么?

为什么你总学不会编程&#xff1f;到底差什么&#xff1f; 笔者看到太多太多的人花上钱、耗费一两年的时间都学不会编程&#xff0c;甚至一门C语言都反反复复学不完、学不会&#xff0c;游走在大门边缘&#xff0c;总是入不了门&#xff0c;到底是什么因为什么&#xff1f; 因…

020、数据库管理之数据导出工具(Dumpling)

Dumpling dumpling详解dumpling介绍dumpling架构与特点dumpling 适用场景dumpling的部署dumpling 所需权限dumpling 导出SQL文件dumpling 导出csv文件对导出数据进行筛选导出数据的格式导出数据的一致性dumpling 性能优化 实验导出TiDB 数据库中的单张表和单个库导出mysql数据库…

tomcat接入skywalking

tomcat接入skywalking 一、说明二、步骤2.1 准备java-agent包2.2 tomcat部署2.2.1 下载2.2.2 tomcat修改catalina.sh文件2.2.3 tomcat修改启动端口2.2.4 启动tomcat 三、验证四、问题排查4.1 tomcat的启动日志 一、说明 服务器中已经运行着skywalking&#xff0c;准备在同一台…

【Jmeter教程】_设置请求的参数

目录 一、Jmeter传参 二、区分参数格式 在做接口测试时&#xff0c;发送请求的参数有两种格式&#xff0c;一种是Parameters&#xff0c;一种是JSON 一、Jmeter传参 Jmeter 传Parameters格式的参数 Jmeter 传JSON格式的参数 二、区分参数格式 在不清楚参数到底是何种格式时…

使用Arthas查看JDK代理源码

【README】 本文总结自黑马程序员-设计模式&#xff0c;老师讲的非常棒&#xff1b; 【1】jdk代理案例 卖票接口 public interface SellTickets2 {void sell(); }火车站 public class TrainStation2 implements SellTickets2 {Overridepublic void sell() {System.out.prin…

Vulnhub: DarkHole:1靶机

kali&#xff1a;192.168.111.111 靶机&#xff1a;192.168.111.130 信息收集 端口扫描 nmap -A -sC -v -sV -T5 -p- --scripthttp-enum 192.168.111.130 访问目标web网站&#xff0c;注册用户 注册时尝试注册用户名为admin的用户&#xff0c;发现存在该用户 进入用户后台&…

孪生网络:图片相似度对比神器

本文来自公众号“AI大道理” ​ Siamese Network&#xff08;孪生网络&#xff09;很早就被发明了&#xff0c;它的作者是著名的卷积神经网络LeNet-5的作者LeCun。 最早用来从相似图片数据集上学习图片表示的网络结构就是siamese网络。 两幅图通过两个共享权重的CNN得到各自…

【Redis】Redis简介及安装部署

Redis简介及安装部署 1.关系数据库 VS 非关系型数据库1.1 关系型数据库1.2 非关系型数据库1.3 关系型数据库和非关系型数据库区别1.4 非关系型数据库产生背景1.5 关系型数据库与非关系型数据库总结 2.Redis简介2.1 Redis概述2.2 Redis的优点2.3 Redis使用场景2.4 关于Redis的高…

一步一步学OAK之一: Hello World(使用DepthAI Python API 显示彩色视频流)

作为编程世界的传统入门仪式&#xff0c;我们这里也以Hello World来命名我们的第一个项目&#xff0c;其实我们这个项目与Hello World没有半毛钱关系。 在这个程序中&#xff0c;我们使用DepthAI Python API来一步步实现显示OAK相机彩色视频流&#xff0c;并捕捉物体的功能 目…

CSS 仿 -webkit-box-reflect 属性实现 图片 镜面 倒影 效果

背景 最近在支付宝小程序上面要实现图片的镜面倒影效果&#xff0c;于是乎&#xff0c;马上找到了-webkit-box-reflect属性&#xff0c;用上之后真的绝绝子&#xff0c;模拟器上也很完美&#xff0c;可是到真机上一看&#xff0c;iOS 不支持&#xff0c;只有安卓手机支持&…

基于web的家校联系平台的设计与实现(源码+文档+PPT+数据库)

以 web为基础、以 Java SSM (springmvc mybatis mysql)为框架、以spring, springmvc, mybatis, bootstrap, JSP, jquery为主要技术来完成一个家庭与学校之间的联系。在框架下进行开发&#xff0c;管理员可以在后台输入信息、管理信息&#xff0c;设置网站信息&#xff0c;管理和…