metershpere中如何调用自定义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可能会不支持

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值