如何使用JAR文件重用JMeter代碼並節省時間
在開發測試時,通常需要在測試中編寫代碼。此代碼可能很長,可能會在多個測試中重復,或者可能僅針對特定測試編寫。此外,如果要求發生變化,則在測試中編寫的代碼可能必須更改或補充。
這可能需要很長時間並且容易出錯。假設我們有20個Apache JMeter?測試,其中編寫了相同的代碼,並且在某個時間點我們決定對所有20個測試的代碼進行更改。必須在每個JMeter測試中進行更改。為了擺脫這種日常工作,我們可以從JAR文件中調用代碼進行測試(JAR文件是Java Archive)。
將在開發環境(例如,IntelliJ IDEA)中編寫將在描述測試方法的測試中使用的代碼,創建一個JAR文件,並且僅執行所需代碼和測試請求的調用。測試本身。
前一篇文章“在JMeter中使用Groovy發送HTTP和HTTPS請求” 展示了如何使用Groovy創建發送HTTP / HTTPS請求的方法。基於這些方法,本文將展示如何在測試中創建JAR文件並在JAR文件中使用此類方法。
要創建此類JAR文件,您必須執行以下操作:
先決條件
1.下載並安裝Groovy和IntelliJ IDEA
2.下載以下JAR文件:
- Apache HttpClient 4.5.5
- Apache HttpCore 4.4.10
- Gson 2.8.5
需要JAR文件來創建發送HTTP / HTTPS請求的方法。
設置Intellij IDEA
3.運行IntelliJ IDEA並創建項目,如下所示。
創建新項目 - > Groovy - >下一步 - >設置項目名稱 - >設置項目位置 - >完成
- 項目名稱 - 任意名稱。我給了這個名字“Jmeter”。
- 項目位置 - 項目所在的目錄
4.單擊“完成”按鈕後,創建的項目將如下圖所示。
5.將下載的JAR文件添加到項目中
文件 - >項目結構
模塊 - >依賴項 - >“+” - > JAR或目錄
6.從打開的列表中,選擇先前下載的JAR文件,然後單擊“確定”。
7.再次單擊“確定”。
8.創建一個Groovy類
src - >右鍵單擊 - >新建 - > Groovy類 - 設置名稱 - >設置種類 - >單擊“確定”
9.將要重用的代碼添加到創建的類中。在這種情況下:
static List<String> sendRequest(String url, String method, Map<String,Object> body) { RequestConfig requestConfig = RequestConfig.custom() .setConnectTimeout(2000) .setSocketTimeout(3000) .build(); StringEntity entity = new StringEntity(new Gson().toJson(body), "UTF-8"); HttpUriRequest request = RequestBuilder.create(method) .setConfig(requestConfig) .setUri(url) .setHeader(HttpHeaders.CONTENT_TYPE, "application/json;charset=UTF-8") .setEntity(entity) .build(); String req = "REQUEST:" + "\n" + request.getRequestLine() + "\n" + "Headers: " + request.getAllHeaders() + "\n" + EntityUtils.toString(entity) + "\n"; HttpClientBuilder.create().build().withCloseable { httpClient -> httpClient.execute(request).withCloseable { response -> String res = "RESPONSE:" + "\n" + response.getStatusLine() + "\n" + "Headers: " + response.getAllHeaders() + "\n" + (response.getEntity() != null ? EntityUtils.toString(response.getEntity()) : "") + "\n"; System.out.println(req + "\n" + res); return Arrays.asList(req, res); } } }View Code
“在JMeter中使用Groovy發送HTTP和HTTPS請求”中給出了此代碼的說明。唯一的區別是“靜態”訪問修飾符。其描述將在本文後面給出。添加自己的代碼時,請務必添加它。
10.創建另一個JAR文件。此文件將添加到JMeter。
文件 - >項目結構
工件 - >單擊“+” - > JAR - >從具有依賴關系的模塊 - >確定
11.選擇並刪除除Jmeter.jar之外的所有文件,如下圖所示。此名稱根據項目名稱生成。
12.雙擊每個文件,從“可用元素”部分添加文件,如下圖所示。IntelliJ將顯示文件。這些是本文開頭的JAR文件。
13.添加後,將顯示文件,如下圖所示。單擊“確定”。
14. 構建 - >構建工件...... - >構建
單擊“Build”後,將在目錄... \ Jmeter \ out \ artifacts \ Jmeter_jar中創建一個JAR文件,如下圖所示。
設置JMeter
15.將JAR文件添加到JMeter
將創建的JAR文件復制到JMeter目錄... \ apache-jmeter-4.0 \ lib
創建JAR文件並將其添加到JMeter後,可以在JMeter本身中調用List <String> sendRequest(String url,String方法,Map <String,Object> body)方法。這將調用JAR文件中的代碼。
為此,您需要在JMeter中執行以下操作:
16.添加一個線程組
右鍵單擊 - >添加 - >線程(用戶) - >線程組
17.添加JSR223采樣器
線程組 - >右鍵單擊 - >添加 - >采樣器 - > JSR223采樣器
JSR223采樣器 - >語言Groovy
18.在JSR223 Sampler中,添加以下代碼示例。
Map<String,Object> map = new LinkedHashMap<>(); map.put("Param_1", "Value_1"); map.put("Param_2", Arrays.asList(1,2,3,4)); map.put("Param_3", Arrays.asList("a","b","c")); List test1 = Requests.sendRequest("https://hooks.zapier.com/hooks/catch/3320164/az95by","POST", map); log.info(Arrays.toString(test1));View Code
根據您的方案更新測試參數。在這種情況下,“https://hooks.zapier.com/hooks/catch/3320164/az95by","POST”,地圖。
在調用sendRequest()方法時,我們不需要導入Requests類(例如,import Requests;)來訪問該類,並且不需要創建類對象(例如,Requests requests = new Requests() )訪問該方法。
我們只需要指定類的名稱(在我們的例子中是Requests),並通過具有相應參數值的點指定方法的名稱。這種形式的方法調用變得可用,因為我們在IntelliJ IDEA中創建了一個靜態方法。靜態方法是一種方法,在此方法之前,訪問修飾符是“靜態的”
19.運行執行代碼後,我們在JMeter控制臺中獲得以下結果:
上圖顯示了正在發送的請求和收到的響應。
cmd還將顯示已發送的請求和收到的響應,如下圖所示。
而已!現在,每次更新測試時都不需要更改整個代碼。如果確實更改了測試方法,請確保在JMeter中更新正確的JAR文件。
如何使用JAR文件重用JMeter代碼並節省時間