1. 程式人生 > >使用JMeter中的 Post Processor JSR223 PostProcessor元件獲取web api介面響應資料作為請求引數

使用JMeter中的 Post Processor JSR223 PostProcessor元件獲取web api介面響應資料作為請求引數

1.簡介

測試工具:JMeter4.0
元件:Post Processor(JSR223 PostProcessor)指令碼程式設計
測試物件:web api/restful api風格

業務描述:傳送Http Request請求後,獲取web api/restful api風格介面響應的資料,

將得到的響應資料作為下次的請求引數(header或者form引數)傳送出去。

2.步驟

2.1.設定整個測試計劃使用的全域性變數,作為http請求的IP地址和埠號

2.2.新增一個http請求元件

2.3.Post Processor中的JSR223PostProcessor元件編寫指令碼

import com.jayway.jsonpath.JsonPath;//匯入json工具包
String jsonString =prev.getResponseDataAsString();  //獲取響應資料變數
log.info(jsonString); //輸出到日誌中
String keyid = JsonPath.read(jsonString,"\$.response.KeyID"); //獲取指定的key變數
String pk = JsonPath.read(jsonString,"\$.response.PK"); //獲取指定的key變數
log.info("PK Value:"+pk);  //輸出到日誌中
log.info("keyid Value:"+keyid); //輸出到日誌中
vars.put("PK",pk); //將value儲存到vars變數中,可以在整個thread中使用
vars.put("KEYID",keyid); //將value儲存到vars變數中,可以在整個thread中使用


2.4.將獲取到的引數作為下一個form引數使用

從vars中獲取key的值,可以使用${key}的表示式。

2.5.將獲取的引數作為下一個http請求header的引數使用

在http Request元件下,新增一個Http Header Manager的元件作為子節點,注意,必須要在Http Request元件的節點

下新增,如果Http Header Manager的元件跟http Request節點除以同一級別會導致請求出問題,會變成一個全域性通用的

Http Header。

2.6.執行後檢視log.info輸出的log資訊

2.7.執行後檢視View Result Tree中的結果

2.7.1檢視將獲取的Http響應資料作為下次Http Request的form引數結果

名稱為RSAEncrypt-AppValidationCode的Http Request元件請求後響應回來的資料。該請求中的publicKey的value

就是使用上個請求響應回來的資料作為form當前請求的引數。


在View Results Tree中檢視RSAEncrypt-AppValidationCode的Http Request的響應資料時,選擇JSONPath Tester可以很直觀得看到json格式的響應資料。

2.7.2檢視將獲取的Http響應資料作為下次Http Header的引數結果

傳送Http Request響應後的json資料。

獲取響應的資料,提取出key為AT的值。

將響應的引數作為Get User Title List請求的Http Header的引數。


可以在Veiw Result Tree中檢視到請求的引數,Authorization引數的值就使用了上一個請求響應回來的資料作為引數值。

8.總結

使用JSR223 PostProcessor元件來編寫指令碼可以解決web api介面引數化的問題,但是還是不能使用線上程組(Thread Group)之間的資料貢獻。至於為什麼不用beanshell呢,其實我也挺鬱悶的,將該指令碼放置在beanshell中總是會提示無法引用json的工具類。最後才決定JSR223 PostProcessor元件,無需再新增其他的jar包就可以解決引數化的問題。後續會繼續想法辦法解決執行緒組之間的資料貢獻的問題。

9.參考資料

官方參考地址:




官方文件參考地址:





相關推薦

使用JMeterPost Processor JSR223 PostProcessor元件獲取web api介面響應資料作為請求引數

1.簡介測試工具:JMeter4.0元件:Post Processor(JSR223 PostProcessor)指令碼程式設計測試物件:web api/restful api風格業務描述:傳送Http Request請求後,獲取web api/restful api風格介面

Jmeterpost和get請求的區別(五)

POST和GET的區別 1、原理不同: 一般我們在瀏覽器輸入一個網址訪問網站都是GET請求;post請求引數放在body data中。get多少次都不會改變頁面呈現的資料,post會。 2、資料量 GET傳送的資料量較小,不能大於2KB。POST傳送的資料量較大,一般預設為不受

recyclerView item為EditText控制元件 使用notifyDataSetChanged重新整理全部,資料錯誤問題

final EditText etAward = holder.getView(R.id.etAward); if (etAward.getTag() instanceof TextWatcher) {//先移除監聽 etAward.removeTextChanged

獲取WEB各階段響應時間

【web效能】Web performance 獲取web各個階段響應時間:DNS解析時間、TCP建立連線時間、首頁白屏時間、dom渲染完成時間、頁面onload時間等 準確地測量web應用程式的效能特性是使web應用程式更快的一個重要方面 那麼我們怎麼知道一個網站載入定的時間呢?

React 學習筆記 (五)(獲取伺服器API介面資料:axios、fetchJSONP)

axios 1.安裝 axios模組 npm install axios --save 2.引用 哪裡使用引哪裡 import axios from 'axios' 3.使用 import React, { Component } from 'react';

SpringCloudService類注入同服務下(@Feign)api介面不走http的解決方案

在spring cloud專案中經常會有一個服務需要依賴另外一個服務的api包,從而使用其介面實現。在我們使用@Feign的時候,其實是用本質上採用的是http呼叫摸個服務下的其介面實現,那麼http呼叫的話,就會多產生一個執行緒,如圖測試, 2018-0

jmeter獲取響應資料引數值的常用方式(JSON提取器 、正則表示式提取器 、XPath提取器 、Bean Shell PostProcessor

 JSON提取器:   XPath提取器: 返回資料格式是HTML的時候,選擇使用此種方式。     正則表示式提取器: 圖中Field to check勾選的是Response Headers,獲取的是請求頭裡的引數值。   B

vue元件獲取元件的方法

關鍵詞:ref 在子元件child.vue中,有兩個資料: data() { return { a:1, b:2, } } 在父元件father.vue中,使用子元件: <child ref="child" .../> &

獲取request請求post提交的JSON格式資料 並轉化成bean

專案在互動過程中,一般會使用json格式進行資料的傳輸 . 需要把一些實體bean轉換成json格式, 有需要把json格式轉化成bean. 下面就是一個工具類,使用者 json串和java bean之間相互轉換 import org.codehaus.jack

jmeter 後置處理器 JSR223 使用到的方法

1. log:用來記錄日誌檔案,寫入到jmeber.log檔案,使用方法:log.info(“This is log info!”); 2. ctx(JmeterContext)通過它來訪問context,使用方法可參考:org.apache.jmeter.threads.

PB資料視窗資料來源的各項控制元件獲取方法

1、得到當前滑鼠所指物件所在的帶區   string str_band   str_band=GetBandAtPointer() //得到當前滑鼠所指物件所在的帶區   str_band=left(str_band,(pos(str_band,'~t') - 1))//得到"heade

獲取iframe的內容、查詢獲取指定元素(關於用c++呼叫WEBBROWSER控制元件,使用相關介面操作web頁面元素的一些方法)

最近開發WINDOWS下的應用程式,需要用到C++中呼叫WEBBROWSER控制元件操作網頁的相關技術,查閱了一下相關文件,反覆除錯了幾天,對其中的技術有了一些膚淺的認識,大多數C++程式設計師對COM應該不陌生,其實用C++操作網頁,在前端應用層上主要就是對COM介面的查

jmeter獲取執行結果並用到後面的請求

1. 下載這個外掛jar包,放到jmeter的lib目錄下: jmeter-plugins-manager-1.3.jar 2.在要提取其結果的http請求上面 右鍵--新增--後置處理器[email protected] Path Extractor 3

表單多個請求引數名字相同,伺服器到底獲取的是哪個請求引數的值,表單的action和get和post提交方式的關係以及提交資料的不同點

直接看程式碼和截圖吧,程式碼中有註釋,還有文字說明!表單get提交和post提交,一個很大的不同點大家都應該知道,post提交,瀏覽器位址列中不會明文顯示,而get提交,瀏覽器位址列中會明文顯示,這不是我們今天討論的重點!今天討論的重點如下:1.表單中如果有2個控制元件的na

Jmeter使用BeanShell獲取指定的值

Jmeter中可以使用Beanshell編寫程式碼,來實現很多功能,這裡介紹的是提取指定的值 **場景:**需要稽核一條資料,前提是,是有這條資料的status是4的時候,該條資料才可以進行稽核操作 具體操作方法: 1.正常新增請求,獲取返回資料,返回的資料中,

Jmeter】解決從csv引數檔案獲取帶引號/逗號的資料問題【轉】

原文:【jmeter隨筆(3)-從csv中獲取帶引號的資料詳情】  點選檢視原文 作者:黑夜小怪 軟體測試技術交流群 : 429183023  最近在工作中,對jmeter實踐的點滴的記錄這裡分享,不一定正確,僅供參考和討論,有想法的歡迎留言、談論。 1技巧

【Cocos2dx】使用CCControlButton建立按鈕、按鈕點選事件,點選事件元件獲取,setPosition的座標問題

按鈕不僅在遊戲,在任何地方都是不可或缺卻又是最基本的東西。在遊戲引擎Cocos2dx中也不例外。 下面用一個例子說明Cocos2dx中如何使用按鈕,同時,如果在Cocos2dx中獲取層,也就是場景、舞臺中的元件。 如下圖,有一個按鈕Clickme,被點選時候與不被點選的時間

BaseAdapter實現ListViewitem上每個控制元件獲取以及點選

借鑑這位大神的程式碼,自己稍微修改了一下(其實也沒改多少),把原始碼出來大家看看,剛開始學習android,有很多不懂的地方,望大家多多指教 先來一張效果圖,點選任何一個button,獲取button的值,具體動作,大家可以自行修改 activity_main.xml

Android--listView的button控制元件獲取item的值

在listview中的listitem設定事件響應,如果listitem中有button控制元件,這時候listitem就不會捕獲到點選事件,而預設的是listitem中的button會捕獲點選事件

Android 通過resource名稱或者layout定義的id name 去獲取R.javaid,得到控制元件

private int getIdFromR(String strId, String type, String packageName) {         Resources resources