metershpere實現調用自定義jar包中的方法
背景
在編寫一些稍微復雜一點的邏輯的接口測試用例時,大家可以感覺到metershpere用起來并不方便,即使用已有的控件寫出來了看起來也異?;靵y,比如有多層循環(huán)邏輯再加上一些邏輯判斷,場景變量,全局變量來回變更時,保證metershpere的界面會讓你看的頭暈。
這時多數同學一定會選擇自己定義腳本來解決。
這樣所有復雜的實現邏輯都可以在jar包中實現,在beanshell腳本中調用就顯得非常方便。
1. 生成jar包
IDE 選擇IDEA,網上可以下載到社區(qū)版,對于我們編jar完全夠用。
新建工程時建議選擇maven工程,這樣后續(xù)導入依賴庫和編包都會很方便。
在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.nio.file?庫優(yōu)雅的操作文件詳解
這篇文章主要介紹了使用java.nio.file?庫優(yōu)雅的操作文件詳解,需要的朋友可以參考下2023-05-05SpringBoot整合RabbitMQ 手動應答(簡單demo)
這篇文章主要介紹了SpringBoot整合RabbitMQ 手動應答 簡單demo,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01