進行接口功能測試過程中,經常會碰到,需要獲取到上一個請求響應結果中數據,傳遞到下一個請求中來使用。在soapui中我們通過Property Transfer來實現。
1、Property Transfer功能界面介紹
右鍵項目project-->new TestSuite-->new TestCase-->右鍵Test Steps-->Add step-->Property Transfer

詳細參考官方文檔:https://www.soapui.org/docs/functional-testing/teststep-reference/property-transfers.html
2、Property Transfer 之 JSONPath
假設我們有兩個接口:登錄、查詢用戶信息。登錄后響應結果會返回一個token值;查詢用戶信息時,請求頭中需帶上這個token值,才能查詢成功
1)登錄請求,運行返回結果成功,且返回token值

2)查詢用戶信息,請求頭中添加token值,運行,成功查詢到當前登錄用戶的信息

如果只有以上2步,則每次都得先運行登錄,copy出token值,再粘貼到查詢用戶信息的請求頭,再運行;相當麻煩;因此在以上2步中間,我們需要插入一個step
3)右鍵loginIn-->Insert Step-->Property Transfer,但是在進行Target設置時,不能直接把值傳到user請求頭中,所以,先自定義設置一個變量,把token值傳遞到這個變量,再進行變量引用

4)右鍵Test Steps-->Add step-->Properties,並且自定義一個變量名稱為token

5)進行Property Transfer的設置如下,運行后查看Properties中token值獲取成功


這里$.token表示獲取根元素下的token對應的值。JSONPath詳細請移步參考http://lemfix.com/topics/63
{ "code": "200", "message": "登錄成功", "token": "40c6d6e2d2a949f6d988c275fd4725ab31b6c14c33c2bbbee0d787b911af58f1" }
6)從上面步驟可以看到token已經獲取成功了,怎么傳遞到查詢信息接口的請求頭呢?直接${變量名}引用

7)雙擊TestCase,運行成功

3、Property Transfer 之 XPath
假設現在我們要從數據庫獲取某一個用戶信息,然后去登錄;soapui發起jdbc請求返回結果默認是xml格式的,這里要用到XPath表達式
1)發起JDBC Request,運行,返回數據庫用戶信息

2)然后再從JDBC Request的返回結果中,獲取到name值進行登錄;這里右鍵JDBC Request-->Insert Step-->Property Transfer,然后進行如下設置

這里//Results/ResultSet/Row[1]/USER.NAME[1] 中 //表示不考慮Results在文檔中的位置,選取Results下的所有ResultSet元素下的第一個Row元素下的第一個USER.NAME元素,所以在這里會取到tudou
XPath詳細請移步參考:https://www.w3school.com.cn/xpath/xpath_syntax.asp
<Results> <ResultSet fetchSize="0"> <Row rowNumber="1"> <USER.NAME>tudou</USER.NAME> <USER.PWD>lemon123456</USER.PWD> <USER.AGE>30</USER.AGE> <USER.EMAIL>121313927@qq.com</USER.EMAIL> <USER.PHONE>18866668888</USER.PHONE> </Row> <Row rowNumber="2"> <USER.NAME>yameng</USER.NAME> <USER.PWD>lemon666</USER.PWD> <USER.AGE>30</USER.AGE> <USER.EMAIL>121313928@qq.com</USER.EMAIL> <USER.PHONE>15811112223</USER.PHONE> </Row> </ResultSet> </Results>
3)登錄請求這里,不用做什么設置

4)雙擊TestCase,運行,查看結果,成功

soapui的關聯方式就整理到這,希望大家學有所用