2016-02-25 39 views
0

我正在使用JMeters使用基本的CRUD方法自動執行從我們的數據庫到/從我們的數據庫的API測試。記錄創建後,我試圖執行3種不同類型的讀取(認爲CRRRUD)。 :)JMeter:傳遞鍵值對不起作用

閱讀1 - 通過ID檢索 HTTP(GET)基URL附加了保存的記錄ID。

http..../crud/tableName/${newRecordId} 

這返回

讀2 - 由字段類型與未定義值 HTTP(POST)基本URL被擴展爲 「搜索」 作爲結束檢索。一個密鑰被定義(「名稱」)沒有值。

http..../crud/tableName/search 
Parameter Name = name 
Value = {undefined} 

這將返回表中字段(「名稱」)不爲null的所有記錄。

閱讀3 - 通過具有定義值的字段類型進行檢索 HTTP(POST)基本URL以「搜索」作爲結尾進行擴展。使用在創建請求期間生成的值來定義密鑰(「名稱」)。

http..../crud/tableName/search 
Parameter Name = name 
Value = Metropolis 

這也返回表中的所有記錄,而不僅僅是名稱= Metropolis的記錄。

在將Key | Value對定義爲「name | Metropolis」時,使用REST客戶端(例如郵差,高級REST客戶端等)時,此第三次檢索可正常工作。所以它一定是JMeter內的一個我缺少的東西。

任何見識都被讚賞!

回答

1

只有一個正確答案:比較REST客戶端和JMeter使用嗅探工具(即Wireshark)發送的內容,檢測差異並相應地配置JMeter。

只是一個猜測:給你提到的 「API」 的 「休息」 的話,也許你需要把它作爲JSON,如:

{"name":"Metropolis"} 

爲單個參數值

Single parameter

或以格式化的方式(如果服務器檢查內容長度和/或希望請求格式正確)

Body Data

您可能還需要添加HTTP Header Manager才能發送Content-Type標頭,其值爲application/json。有關更多詳細信息,請參閱Testing SOAP/REST Web Services Using JMeter指南。

+0

但是如果你不知道名字的價值呢?我試圖將生成的值保存到變量中。 ** {「name」,$ {fieldNameValue}} **其中key =「name」和value = $ {fieldNameValue}。我看不到有辦法做到這一點。 – David

+0

你幾乎在那裏,只是用引號'surname'變量'{「name」:「$ {fieldNameValue}」' –

+0

再次,你搖滾!那正是我所錯過的。謝謝! – David