首页 > 其他分享 >metershpere中如何调用自定义jar包中的方法

metershpere中如何调用自定义jar包中的方法

时间:2024-09-02 13:53:33浏览次数:15  
标签:包中 map String 自定义 metershpere jar import Map HashMap

背景:

       在编写一些稍微复杂一点的逻辑的接口测试用例时,大家可以感觉到metershpere用起来并不方便,即使用已有的控件写出来了看起来也异常混乱,比如有多层循环逻辑再加上一些逻辑判断,场景变量,全局变量来回变更时,保证metershpere的界面会让你看的头晕。这时多数同学一定会选择自己定义脚本来解决。这样所有复杂的实现逻辑都可以在jar包中实现,在beanshell脚本中调用就显得非常方便。

1. 生成jar包

IDE 选择IDEA,网上可以下载到社区版,对于我们编jar完全够用。新建工程时建议选择maven工程,这样后续导入依赖库和编包都会很方便。

在pom.xml中添加项目的三方依赖库

编写完代码后直接双击package即可生成jar包

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;

public class GenerateSignature {
    public static String getSignature1(String myJsonString)
    {
        LinkedHashMap<String, Object> body = JSON.parseObject(myJsonString, LinkedHashMap.class, Feature.OrderedField);
        JSONObject myJsonObject = new JSONObject(body);
        System.out.println(myJsonObject.toString());
        String myStr = getSigStr1(body);
        String signature = MD5Util.getMd5Lower(myStr);
        return signature+"_"+myTime;

    }

    public static String getSignature2(HashMap<String,Object> myHashMap)
    {
        int myShutMapTime = 0;
        int myDelayTime = 0;
        List<String> myStoreCodes = null;
        String myStoreCode = null;
        String mySignatureContent = null;
        Integer myId = (Integer) myHashMap.get("myId");
        String myReason = (String) myHashMap.get("myReason");
        int myType = (int) myHashMap.get("myType");
        long myTime = (long) myHashMap.get("time");

        String signature = MD5Util.getMd5Lower(mySignatureContent);
        return signature;
    }
}

说明:

1. 在工程src/main/java下面如果没有定义目录,在beanshell中直接导入类名即可 

import GenerateSignature; 如果有包名目录,需要带上包名路径,如

import com.test.GenerateSignature

2. GenerateSignature类中提供出来的方法建议都定义成public static 形式,这样在beanshell脚本中通过类名可以直接调用 GenerateSignature.getSignature1("myString")

3. 参数传入可以以消息体字符串传入,也可以以Map形式传入

2. 上传Jar包

项目设置==》文件管理==》添加文件  选择文件上传

最后点击查看将添加jar包开关打开

3. beanshell脚本调用代码如下:

import java.util.HashMap;
import GeneragteSignature;
// 参数为字符串
String myBody = "{\"userName\":\"xxx\",\"orderId\":\"1723333333\"}";
mySig1 = GeneragteSignature.getSignature1(myBody);
log.info("mySig1: " + mySig1);

//参数为Map
Map map = new HashMap();
map.put("myId", null);
map.put("myReason", null);
map.put("myType", 1);
map.put("time", 0L);
mySig2 = GeneragteSignature.getSignature2(map1);
log.info("mySig2: " + mySig2);

说明:

1. 脚本中演示了两种参数方式调用,一种直接传消息体字符串,这个字符串需要经过压缩转义

大家可以直接到网上查找json字符串压缩转义网站进行处理,如:

2. 如果已Map形式传入,需要注意map中字段类型,比如如果是long行,传入值需要写成 0L 形式

3. 声明为Map形式可以直接这样写 Map map = new HashMap(); 不需要带泛型<>, 如果带了beanshell可能会不支持

标签:包中,map,String,自定义,metershpere,jar,import,Map,HashMap
From: https://blog.csdn.net/gr1785/article/details/141815657

相关文章

  • 20240905_000339 mysql 存储过程 用户自定义变量
    自定义变量的特点一个@符号定义自定变量打印自定变量另一种定义方式查询赋值......
  • Prestashop安装问题:无法安装自定义模块
    Prestashop是一款免费开源的电子商务软件,它具有易于使用、功能丰富和高度可定制化等特点。如果在安装自定义模块时遇到问题,可能是由于以下原因:权限问题:确保你具有足够的权限来安装模块。你可以尝试以管理员身份运行安装程序。文件权限问题:确保自定义模块所在的文件夹及其子文件夹......
  • Scrapy:使用自定义列设置保存为 CSV 的指南
    在Scrapy中,你可以使用自定义列设置将数据保存为CSV文件。以下是一个基本的指南:定义你的数据项(Item):在你的Scrapy项目中,创建一个类来定义你要提取的数据项。每个数据项对应于CSV文件中的一列。处理数据:在你的爬虫(Spider)中,提取数据并将其存储在定义的数据项中。设置CSV输出:......
  • 【QTTabBar】手把手教你QTTabBar命令栏js脚本的自定义开发与实战
    本帖最后由二零一八小王子于2024-8-3121:45编辑<ignore_js_op>众所周知,360压缩有一个解压功能,也就是打开压缩包后点击“一键解压”就可解压完成并且打开目标文件夹。今天这里要实现的是在qttabbar的命令按钮,也就是上面的工具栏处,使用js编写一个一键解压功能。也就是对于一个......
  • priority_queue自定义排序
    priority_queue自定义排序原文章地址,本文章仅作为学习记录https://www.cnblogs.com/shona/p/12163381.htmlpriority_queue本质是一个堆。头文件是#include<queue>关于priority_queue中元素的比较模板申明带3个参数:priority_queue<Type,Container,Functional>,其中Typ......
  • MyBatis如何自定义项目中SQL日志
    说明:用过MyBatis框架的同学们都知道,打印SQL日志,可以通过在application.yml配置文件中加入下面配置来设置:mybatis:configuration:log-impl:org.apache.ibatis.logging.stdout.StdOutImpl但打印出来的SQL如下,丑陋不堪,不够优雅本文介绍如何自定义SQL日志拦截器......
  • C#自定义控件—转换开关
    C#用户控件之转换开关如何自定义一个转换键(Toggle)?三步绘制一个精美控件:定义属性;画布重绘;添加事件;主要技能:如何自定义属性;画布重绘的一般格式;控件的事件触发过程;技能扩展转换按钮使能时添加二次确认弹框?在From窗体中应用控件时,点击事件没有触发?属性名称在......
  • Langchain框架中的Agents全解析:类型、工具与自定义实践
    文章目录前言一、什么是Agents?举个栗子......
  • 【综合小项目】—— 爬取数据、数据处理、建立模型训练、自定义数据进行测试
    文章目录一、项目内容二、各步骤的代码实现1、爬取数据2、数据处理3、建立模型训练4、自定义数据进行预测一、项目内容1、爬取数据本次项目的数据是某购物平台中某个产品的优质评价内容和差评内容采用爬虫的selenium方法进行爬取数据内容,并将爬取的内容分别存放......
  • ROS1 入门 —— 编写自定义节点Node
    引言机器人操作系统(RobotOperatingSystem,ROS)是一个开源的元操作系统,用于开发机器人的软件。它并不是一个真正的操作系统,而是一套软件框架和服务,设计用来帮助开发者构建复杂的机器人系统。ROS提供了硬件抽象、设备驱动、库、消息传递和工具包等,使得机器人软件的开发变得......