metershpere实现调用自定义jar包中的方法

 更新时间:2024年10月24日 12:04:53   作者:gr1785  
在MeterSphere接口测试中,面对多层循环逻辑和逻辑判断等复杂情况,直接编写测试用例往往显得混乱不便,本文介绍了一个简化这一过程的方法:首先使用IDEA创建Maven工程,编写所需逻辑并生成jar包;然后在MeterSphere中上传此jar包

背景

在编写一些稍微复杂一点的逻辑的接口测试用例时,大家可以感觉到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可能会不支持

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Java集合框架Set&Map详细解析

    Java集合框架Set&Map详细解析

    这篇文章介绍了Java集合框架中的Map和Set接口,Map接口用于存储键值对,常用实现类有HashMap、LinkedHashMap和TreeMap,Set接口用于存储唯一元素,常用实现类有HashSet、LinkedHashSet和TreeSet,每种实现类都有其特点和适用场景,感兴趣的朋友跟随小编一起看看吧
    2025-11-11
  • Spring Dao层@Repository与@Mapper的使用

    Spring Dao层@Repository与@Mapper的使用

    这篇文章主要介绍了Spring Dao层@Repository与@Mapper的使用方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Java中异或的深入讲解

    Java中异或的深入讲解

    这篇文章主要给大家介绍了关于Java中异或的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-08-08
  • Java对接阿里云短信服务保姆级教程(新手秒会)

    Java对接阿里云短信服务保姆级教程(新手秒会)

    这篇文章主要介绍了如何在阿里云上申请短信服务以及如何使用Java代码进行对接,包括申请资质、签名和模板,以及编写Java代码整合成工具类进行调用的步骤,需要的朋友可以参考下
    2024-12-12
  • 浅析JAVA中的内存结构、重载、this与继承

    浅析JAVA中的内存结构、重载、this与继承

    这篇文章主要介绍了 JAVA中的内存结构、重载、this与继承的相关资料,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Java实现单链表基础操作

    Java实现单链表基础操作

    大家好,本篇文章主要讲的是Java实现单链表基础操作,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02
  • Java使用@Retryable注解实现HTTP请求重试

    Java使用@Retryable注解实现HTTP请求重试

    HTTP调用是Java应用与外部API进行交互时重要的访问方式之一,为了确保在遇到临时性问题时能自动重试,我们可以设计一个灵活的重试机制,在Java中,我们可以通过注解来实现这一功能,文将介绍如何使用注解@Retryable来实现HTTP调用的重试机制,需要的朋友可以参考下
    2024-10-10
  • Myeclipse工程发布时端口占用问题的解决方法

    Myeclipse工程发布时端口占用问题的解决方法

    这篇文章主要介绍了Myeclipse工程发布时端口占用问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • Mybatis update数据库死锁之获取数据库连接池等待

    Mybatis update数据库死锁之获取数据库连接池等待

    这篇文章主要介绍了Mybatis update数据库死锁之获取数据库连接池等待的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-07-07
  • IDEA2023.3.4开启SpringBoot项目的热部署(图文)

    IDEA2023.3.4开启SpringBoot项目的热部署(图文)

    本文使用的开发工具是idea,使用的是springboot框架开发的项目,配置热部署,可以提高开发效率,文中通过图文介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02

最新评论