进行接口功能测试过程中,经常会碰到,需要获取到上一个请求响应结果中数据,传递到下一个请求中来使用。在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值
3)右键loginIn-->Insert Step-->Property Transfer,但是在进行Target设置时,不能直接把值传到user请求头中,所以,先自定义设置一个变量,把token值传递到这个变量,再进行变量引用
这里$.token表示获取根元素下的token对应的值。JSONPath详细请移步参考http://lemfix.com/topics/63
{ "code": "200", "message": "登录成功", "token": "40c6d6e2d2a949f6d988c275fd4725ab31b6c14c33c2bbbee0d787b911af58f1" }
6)从上面步骤可以看到token已经获取成功了,怎么传递到查询信息接口的请求头呢?直接${变量名}引用
3、Property Transfer 之 XPath
假设现在我们要从数据库获取某一个用户信息,然后去登录;soapui发起jdbc请求返回结果默认是xml格式的,这里要用到XPath表达式
1)发起JDBC Request,运行,返回数据库用户信息
![SoapUI 关联之Property Transfer、JSONPath、Xpath [4]_第13张图片](http://img.e-com-net.com/image/info8/377e3fcd6fba40b98fd350dfac6238f8.jpg)
这里//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>tudouUSER.NAME> <USER.PWD>lemon123456USER.PWD> <USER.AGE>30USER.AGE> <USER.EMAIL>[email protected]USER.EMAIL> <USER.PHONE>18866668888USER.PHONE> Row> <Row rowNumber="2"> <USER.NAME>yamengUSER.NAME> <USER.PWD>lemon666USER.PWD> <USER.AGE>30USER.AGE> <USER.EMAIL>[email protected]USER.EMAIL> <USER.PHONE>15811112223USER.PHONE> Row> ResultSet> Results>
3)登录请求这里,不用做什么设置