這些天在使用Jmeter進行接口測試的時候,我遇到一些問題,做一下記錄:
1.登錄的時候會獲取到tokenId這個字段信息,後面的接口都要用到這個字段信息。那麼怎麼拿到這個數據並且讓它可以爲後面的接口所用呢?
由於我在調用登錄接口後,發現tokenId這個字段信息是存放json數據裏面,所以就要用到Json Extractor了。
(1)點擊線程組的“Add-Sampler-Http Request”,新增一個HTTP請求,命名爲“登錄系統”,輸入正確的網址和參數,改爲Post方法;
(2)點擊HTTP請求的“Add-Post Processors-Json Extractor”,新增一個Json提取器,如下圖:
(3)由於登錄系統接口返回的數據大致如下,所以在Json Path expressions輸入“$..token”。
有人可能就不明白了,爲什麼這麼寫,首先名稱也就是Names of created variables,由我們自己定,但是要注意的一點是必須與後面引用時的名稱一致。例如,我在後面一個接口中要用到這個參數,所以Value必須是“${對應名稱}”,如下圖:
JSON Path expressions 的寫法是有格式的,爲什麼是“$..token”呢?
具體可以參考實例:https://github.com/json-path/JsonPath
2.如何獲取系統時間
我在接口測試的時候發現有一個接口需要進行實時刷新,其中有一個參數就是系統時間,具體如下:
time=2020-03-27%2B15%3A43%3A12+。
可以用__time()函數獲取當前時間
${__time()} 當前時間到計算機元年的毫秒數
${__time(時間格式)} 以預定的格式顯示當前時間
time ${__time()} 1585300919568
YMD ${__time(YMD)} 20200327
HMS ${__time(HMS)} 171215
YMDHMS ${__time(YMDHMS)} 20200327171215
time1 ${__time(yyMMdd)} 200327
time2 ${__time(yyyy-MM-dd)} 2020-03-27
time3 ${__time(yyyy-MM-dd'T'HH:mm:ss)} 2020-03-27T17:12:15
time4 ${__time(yyyy-MM-dd'T'HH:mm:ss.SSS} 2020-03-27T17:12:15.123
只需要添加參數time,Value設置成“${__time(yyyy-MM-dd'+'HH:mm:ss)} ”
你以爲這樣就沒問題了嗎?結果還是報錯了,一看Request Body,原來是格式不對,所以一定要記得勾選“URL Encode”,讓time參數的值做轉碼處理。