進行接口功能測試過程當中,常常會碰到,須要獲取到上一個請求響應結果中數據,傳遞到下一個請求中來使用。在soapui中咱們經過Property Transfer來實現。html
右鍵項目project-->new TestSuite-->new TestCase-->右鍵Test Steps-->Add step-->Property Transfer數據庫
詳細參考官方文檔:https://www.soapui.org/docs/functional-testing/teststep-reference/property-transfers.html測試
假設咱們有兩個接口:登陸、查詢用戶信息。登陸後響應結果會返回一個token值;查詢用戶信息時,請求頭中需帶上這個token值,才能查詢成功fetch
1)登陸請求,運行返回結果成功,且返回token值 ui
2)查詢用戶信息,請求頭中添加token值,運行,成功查詢到當前登陸用戶的信息spa
若是隻有以上2步,則每次都得先運行登陸,copy出token值,再粘貼到查詢用戶信息的請求頭,再運行;至關麻煩;所以在以上2步中間,咱們須要插入一個step3d
3)右鍵loginIn-->Insert Step-->Property Transfer,可是在進行Target設置時,不能直接把值傳到user請求頭中,因此,先自定義設置一個變量,把token值傳遞到這個變量,再進行變量引用code
4)右鍵Test Steps-->Add step-->Properties,而且自定義一個變量名稱爲tokenxml
5)進行Property Transfer的設置以下,運行後查看Properties中token值獲取成功htm
這裏$.token表示獲取根元素下的token對應的值。JSONPath詳細請移步參考http://lemfix.com/topics/63
{ "code": "200", "message": "登陸成功", "token": "40c6d6e2d2a949f6d988c275fd4725ab31b6c14c33c2bbbee0d787b911af58f1" }
6)從上面步驟能夠看到token已經獲取成功了,怎麼傳遞到查詢信息接口的請求頭呢?直接${變量名}引用
7)雙擊TestCase,運行成功
假設如今咱們要從數據庫獲取某一個用戶信息,而後去登陸;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的關聯方式就整理到這,但願你們學有所用