亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Jmeter如何實現參數名稱和個數動態變化的接口請求

發布時間:2020-07-02 16:29:53 來源:網絡 閱讀:1489 作者:809316839 欄目:軟件技術
  • 需求分析
    在做接口自動化和性能測試,經常會遇到一些請求參數是根據上一個請求結果,動態變化的參數個數,參數名可能相同,也可能為序列遞增格式,參數個數可能為10、20個,這樣就導致手工不好模擬該請求效果,需要進行封裝自定義函數才能實現該效果

??Jmeter是一款開源的性能測試工具,目前是行業內使用率最高的性能測試工具之一,Jmeter是使用JAVA語言開發的,本文介紹如何使用JAVA語言開發自己需要的擴展函數

  • 目前業界流行的兩種開發模式,本文介紹第二種
    1、使用Jmeter二次開源環境,直接在org.apache.jmeter.functions包下面開發自己需要的函數,然后導出該jar包,替換Jmeter目錄的ApacheJMeter_functions.jar文件
    2、直接在Maven 項目下開發自定義函數,然后打包,該方法、簡單、高效

  • 開發思路
    1、使用Eclipse創建Maven 項目,配置Pom文件,引入擴展function所需的依賴包;
    2、創建類,然后繼承AbstractFunction,實現四個主方法;
    3、對編寫好的項目進行編譯、打包
    4、把打包好的函數放到jmeter擴展目錄,調用自定義函數,檢查是否正確;
JDK環境 Jmeter依賴包版本 Maven倉庫版本
1.8 4.0 3.5.3

一、新建Maven項目

1.File》New》Project,選擇Maven》Maven Project,一直點擊Next,此處Package包名一定要以.functions格式結束,否則開發出來的函數,Jmeter讀取不到
Jmeter如何實現參數名稱和個數動態變化的接口請求
Jmeter如何實現參數名稱和個數動態變化的接口請求
2.配置Pom文件,Pom文件配置的Jmeter4.0版本,只要保存了Pom文件,系統就會自動下載和關聯相應的jar包,Pom配置文件如下:
Jmeter如何實現參數名稱和個數動態變化的接口請求
3.保存Pom文件之后,系統會自動下載關聯的依賴文件,如下圖:
Jmeter如何實現參數名稱和個數動態變化的接口請求
Jmeter如何實現參數名稱和個數動態變化的接口請求
4.此時,由于對pom文件進行了修改,項目頂層會出現一把×,并且編譯可能就會報錯,需要執行Maven》Update Project更新外部依賴的Jar包

  • 更新前:
    Jmeter如何實現參數名稱和個數動態變化的接口請求
    Jmeter如何實現參數名稱和個數動態變化的接口請求
  • 更新后,編譯、打包正常:
    Jmeter如何實現參數名稱和個數動態變化的接口請求
    二、編寫自定義函數代碼
  • 要實現擴展Jmeter function,主要有兩點
    1.1. 實現function的類的package聲明必須包含".functions"

    JMeter設計讓一些核心的類可以在非UI的方式下運行的時候能被加載進來,這些類會被優先加載。加載這些類的時候是通過命名規則來實現的。所有實現function的類必需包含".functions",所以我們自定義實現的類里必須包含".functions",比如如下申明的包名為:"jmeter.test.functions"

Jmeter如何實現參數名稱和個數動態變化的接口請求
1.2. 首先在Jmeter.test.functions包下創建一個類,類名稱為Save_Body_Data,需要繼承AbstractFunction類,然后實現父類的四個方法

      private static final List<String> desc = new LinkedList<String>();  /*該變量用來獲取對參數值輸入進行描述*/

      private static final String KEY = "__Media_Save_Body_Data";  /*這個是在函數助手上顯示的函數名稱*/

      static {
          desc.add("請輸入第一個參數,類似variable=value,其中變量值可以寫成變量格式,格式為${value},如果有多個參數,只需要用&連接"
                + "類似variable=value&variable1=value1,第一個參數也可以置空,然后在Body data中填寫也行");  
          desc.add("請輸入第二個參數,該參數為變化的序列id,需要和jmeter中獲取的變量名保持一致");  
          desc.add("請輸入第三個參數,該參數為申明重復參遞增參數名是否一樣,填否則序列遞增,如id[0]、id[1],不填則默認相同"); 
          desc.add("請輸入第四個參數,該參數值是用來在jmeter的Body_Data用來調用的,可以根據需要自定義,不填則默認為第二個參數名"); 
          desc.add("請輸入第五個參數,該參數為序列的連接字符比如%、&,不填則默認為&");
          /*該描述是針對函數的輸入值進行描述*/
      }
  • 這里主要是定義變量desc、KEY 然后將描述顯示到函數的參數描述中,如下圖
    Jmeter如何實現參數名稱和個數動態變化的接口請求

  • setParameters函數作用就是獲取函數輸入框界面輸入的值,將輸入的值傳遞給execute

    public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
          /*該函數用來獲取輸入的值*/
          /*這里,后面的1,2分別指接受的最小參數個數為1,以及接受的最大參數個數為5*/
          checkParameterCount(parameters,1,5);
          values = parameters.toArray();
          /*將值存入類變量中,把接受到的參數裝成array,然后用value[i]取出來 */
    }
    • getReferenceKey函數是提供一個在Jmeter函數助手顯示的函數名稱
    public String getReferenceKey() {
          /*本方法是提供一個在Jmeter函數助手顯示的函數名稱*/
        return KEY;
    }
  • getArgumentDesc函數用來獲取對輸入參數的描述

    public List<String> getArgumentDesc() {
          /*該函數用來獲取對輸入參數的描述*/
        return desc;
    }
  • execute函數用來實現獲取輸入的參數,然后通過對參數做需要的處理,該函數是開發中最重要的模塊,并且進行最后執行,本次案例中主要實現的功能就是獲取上一個接口返回的變量個數,然后對獲取的變量名和參數值進行封裝,最后通過字符連接成我們需要的效果

Jmeter如何實現參數名稱和個數動態變化的接口請求

三、編譯、打包

  1. 編寫代碼完成,就可以進行編譯、打包操作了,右鍵點擊項目》Run As》Maven build
    Jmeter如何實現參數名稱和個數動態變化的接口請求
  2. 在Goals中輸入package,然后點擊Apply》Run執行編譯,打包操作
    Jmeter如何實現參數名稱和個數動態變化的接口請求
  3. 編譯打包完成,在target目錄會生成一個jar包,如下圖所示
    Jmeter如何實現參數名稱和個數動態變化的接口請求
    Jmeter如何實現參數名稱和個數動態變化的接口請求

    四、驗證開發的函數是否正常

    1. 首先把Jmeter.test.functions函數放到jmeter的\lib\ext目錄
      Jmeter如何實現參數名稱和個數動態變化的接口請求
    2. 然后啟動jmeter,進入選項》函數助手對話框,選擇_Media_Save_Body_Data,輸入參數值,點擊生成按鈕(點了生成,系統就會生成一個函數,然后就相當于做了復制功能,可以拷貝到需要調用的地方)本次 只輸入第二個參數值(該值必須為上一個接口定義的變量名稱,稍后介紹如何使用該函數)
      Jmeter如何實現參數名稱和個數動態變化的接口請求
    3. 首先需要在上一個接口添加JSON Extractor元件,用來獲取變化的參數值,
      Jmeter如何實現參數名稱和個數動態變化的接口請求
    4. 然后使用BeanShell Sampler調用生成的函數,該sample執行成功之后,就會生成我們要的字段效果
      Jmeter如何實現參數名稱和個數動態變化的接口請求
    5. 手工請求參數如下
      Jmeter如何實現參數名稱和個數動態變化的接口請求
    6. 通過代碼實現的參數只需要用參數名稱=值然后每個參數使用&連接即可
      Jmeter如何實現參數名稱和個數動態變化的接口請求
    7. 執行結果,如下:
      Jmeter如何實現參數名稱和個數動態變化的接口請求
      Jmeter如何實現參數名稱和個數動態變化的接口請求
      • 函數功能介紹
        1、本次開發的函數實現的效果為通過傳入5個參數,其中只有第二個為必填項,其它參數可以為空
        2、第一個參數可以為空,當為空的時候,則需要把parameters中的參數和值在body data中手動寫入,本次就是在body data中手工寫入了不會變化的參數名,你也可以直接把這些參數傳入到第一個參數,格式為funid=imp_provider&destfunid=pur_apply_provider&parentId=${apply_id}
        &pagetype=import&eventcode=import&user_id=${user}&dataType=json
        3、第二個參數為獲取的變量名稱,該名稱一定要和jmeter中json path中定義的參數名一致,這樣才能獲取到jmeter中變化的參數
        4、第三個參數為判斷重復變化的參數名稱的格式是一樣還是序列遞增,比如id[0],id[1],默認不填相同,如果是序列遞增,只需要填否
        Jmeter如何實現參數名稱和個數動態變化的接口請求
        5、第四個參數則是用來保存整個函數封裝的字符串,默認不填則會把所有字符串封裝到第二個參數中,填寫了則封裝在該參數中,需要在body data中調用該變量,調用方式為${變量名}
        6、第五個參數則為各個參數的連接方式,默認不填則為&

Jmeter.test.functions.jar下載方法見文章末尾介紹
完整源碼如下:
Jmeter如何實現參數名稱和個數動態變化的接口請求


? ?如果文章對你有幫助,可以在右下角點擊關注功能,歡迎轉發、拍磚,本人會持續推出與測試有關的文章,與大家分享測試技術,每一篇原創文章都是用心編寫,杜絕抄襲復制,微信公眾號與本平臺文章同步,方便大家查閱


QQ技術交流群:加群請輸入驗證信息51CTO
??????????????Jmeter如何實現參數名稱和個數動態變化的接口請求


微信二維碼關注公眾號:

????????????Jmeter如何實現參數名稱和個數動態變化的接口請求


關注之后,回復資源下載,即可獲取本人共享的各種資源下載地址

Jmeter如何實現參數名稱和個數動態變化的接口請求

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

卓尼县| 佳木斯市| 收藏| 呼和浩特市| 厦门市| 安国市| 车致| 辽宁省| 志丹县| 资溪县| 博白县| 兰溪市| 曲阳县| 青海省| 永安市| 惠来县| 浦东新区| 多伦县| 安岳县| 客服| 重庆市| 安庆市| 新余市| 余干县| 郓城县| 长岛县| 易门县| 惠东县| 长子县| 双江| 电白县| 西吉县| 静宁县| 杭锦旗| 宽城| 综艺| 巨野县| 安泽县| 望谟县| 江津市| 泰和县|