Groovy在JMeter中處理header

發現JMeter系列寫了不少文章,乾脆整個全套的,把剩下的Demo也發一下,舊文如下:

  • 用Groovy處理JMeter斷言和日誌
  • 用Groovy處理JMeter變數
  • 用Groovy在JMeter中執行命令行
  • 用Groovy處理JMeter中的請求參數
  • 用Groovy在JMeter中使用正則提取賦值
  • JMeter吞吐量誤差分析

上一期已經講過了JMeter如何處理cookie,文章如下:

  • Groovy在JMeter中處理cookie

這裡先重複一個事實,cookie只是HTTP請求header裡面的一個欄位,但是在JMeter裡面是分開處理的,HTTP資訊頭管理器HTTP Cookie管理器完全就是兩個對象,分工不重複,在源碼裡面使用的是HeaderManagerCookieManager兩個類。

首先講一講HeaderManager的基本使用,添加header,獲取header,修改header

  • 首先新建一個簡單的執行緒組和一個簡單的請求:

Groovy在JMeter中處理header

  • 然後創建一個HTTP資訊頭管理器
  • 添加JSR223 預處理程式(後置處理程式需要下一次次請求)

腳本內容:

import org.apache.jmeter.protocol.http.control.*    def manager = sampler.getHeaderManager()  manager.add(new Header("FunTester","FunTester"))  def h = manager.get(0)  log.info("-------Header : " + h.getName() + "----------- " + h.getValue())  h.setValue("FunTester039029309230")  log.info("-------Header : " + h.getName() + "----------- " + h.getValue())```    * 控制台輸出:    ```Java  2020-03-19 21:08:23,928 INFO o.a.j.e.StandardJMeterEngine: Running the test!  2020-03-19 21:08:23,929 INFO o.a.j.s.SampleEvent: List of sample_variables: []  2020-03-19 21:08:23,930 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)  2020-03-19 21:08:24,059 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : 執行緒組  2020-03-19 21:08:24,059 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group 執行緒組.  2020-03-19 21:08:24,060 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error  2020-03-19 21:08:24,061 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=0 perThread=0.0 delayedStart=false  2020-03-19 21:08:24,062 INFO o.a.j.t.ThreadGroup: Started thread group number 1  2020-03-19 21:08:24,062 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started  2020-03-19 21:08:24,062 INFO o.a.j.t.JMeterThread: Thread started: 執行緒組 1-1  2020-03-19 21:08:24,101 INFO o.a.j.m.J.處理Header: -------Header : FunTester----------- FunTester  2020-03-19 21:08:24,102 INFO o.a.j.m.J.處理Header: -------Header : FunTester----------- FunTester039029309230  2020-03-19 21:08:24,271 INFO o.a.j.t.JMeterThread: Thread is done: 執行緒組 1-1  2020-03-19 21:08:24,271 INFO o.a.j.t.JMeterThread: Thread finished: 執行緒組 1-1  2020-03-19 21:08:24,271 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test  2020-03-19 21:08:24,271 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)    
  • 查看結果樹

  • 「鄭重聲明」:文章首發於公眾號「FunTester」,禁止第三方(騰訊雲除外)轉載、發表。