JMeter 使用正則和JSON提取器參數化(常用於提取token/cookie)


一、使用正則表達式提取器提取token

 查看登錄響應參數找出token。圖中token為 "ticketString": "ccf26b17-a96f-4913-8925-9bbf737bef35"

 

使用正則表達式提取器提取token

 

 

 

當其他線程組需要使用token時,需要使用BeanShell Sampler設置全部變量,${__setProperty(newtoken,${token})}

 

在“HTTP信息頭管理器”使用   ${__property(newtoken)}   引用token ,需要注意設置和引用時的區別,name里面的token為我們需要傳入變量名,不是我們提取token時自定義的變量

 

在結果樹里面,查看引用了token請求的RequestHeaders,若顯示token值則表示token引用成功,若顯示的是 ${__property(newtoken)} 則表示引用失敗,失敗原因從使用正則提取token開始排查

2. 提取cookie:登錄后根據正則表達式提取cookie,cookie位於響應頭中的set-cookie字段。

正則:Set-Cookie: (.*);Path=/;

在線程組一級添加一個http cookie manager。並且要在每個請求下面都添加一個http cookie manager,雖然什么東西都不用填寫,但是必須添加,不然只會讓緊跟在登錄請求后的那個請求有cookie,后面的請求都沒有cookie。

二、使用json提取器提取token

首先查看登錄響應數據結構

 

 使   $.data.ticketString   提取token,提取后引用方式都相同

 

查看引用token是否成功

 

注:利用上面兩種方法基本上可以提取任何響應的數據並將其參數化

三、常見問題

1、在線程組中引用另一個線程組定義的參數時,參數的值未被引用。(已使用json Path Tester或RegExp Tester驗證提取的方法能提取出值)

問題原因:線程組(Thread Group)之間是同級的,在使用Jmeter默認配置時,線程組是無序並行運行的,所以可能會出現線程組1還沒提取出參數的值,線程組2卻已經引用了參數。

解決方法:點擊TestPlan(測試計划) --> 勾選RunThread Groups...,讓線程組按排列順序執行即可。

 來源:https://www.cnblogs.com/testlearn/p/10958892.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM