1. 程式人生 > >如何使用JAR文件重用JMeter代碼並節省時間

如何使用JAR文件重用JMeter代碼並節省時間

ica 參數 發生 col timeout 安裝 ner stl 部分

在開發測試時,通常需要在測試中編寫代碼。此代碼可能很長,可能會在多個測試中重復,或者可能僅針對特定測試編寫。此外,如果要求發生變化,則在測試中編寫的代碼可能必須更改或補充。

這可能需要很長時間並且容易出錯。假設我們有20個Apache JMeter?測試,其中編寫了相同的代碼,並且在某個時間點我們決定對所有20個測試的代碼進行更改。必須在每個JMeter測試中進行更改為了擺脫這種日常工作,我們可以從JAR文件中調用代碼進行測試(JAR文件是Java Archive)。

將在開發環境(例如,IntelliJ IDEA)中編寫將在描述測試方法的測試中使用的代碼,創建一個JAR文件,並且僅執行所需代碼和測試請求的調用。測試本身。

我們不需要在測試中直接編寫代碼,如果由於某種原因我們需要更改代碼,我們只在一個地方更改它。

前一篇文章“在JMeter中使用Groovy發送HTTP和HTTPS請求” 展示了如何使用Groovy創建發送HTTP / HTTPS請求的方法。基於這些方法,本文將展示如何在測試中創建JAR文件並在JAR文件中使用此類方法。

要創建此類JAR文件,您必須執行以下操作:

先決條件

1.下載並安裝GroovyIntelliJ 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代碼並節省時間