SoapUI 关联之 Property Transfer、JSONPath、Xpath

本贴最后更新于 1352 天前,其中的信息可能已经沧海桑田

进行接口功能测试过程中,经常会碰到,需要获取到上一个请求响应结果中数据,传递到下一个请求中来使用。在soapui中我们通过Property Transfer来实现。

1、Property Transfer功能界面介绍

右键项目project-->new TestSuite-->new TestCase-->右键Test Steps-->Add step-->Property Transfer
image.png


![image.png](http://testingpai.com/upload/file/2019/3e40dce3-1dd0-42f5-87f8-3f7f832bed35.png)

详细参考官方文档:https://www.soapui.org/docs/functional-testing/teststep-reference/property-transfers.html



### 2、Property Transfer 之 JSONPath

假设我们有两个接口:登录、查询用户信息。登录后响应结果会返回一个token值;查询用户信息时,请求头中需带上这个token值,才能查询成功


1. 登录请求,运行返回结果成功,且返回token值 ![image.png](http://testingpai.com/upload/file/2019/7362314f-6bc8-4186-8c7a-c94136395de7.png)
2. 查询用户信息,请求头中添加token值,运行,成功查询到当前登录用户的信息

image.png

如果只有以上2步,则每次都得先运行登录,copy出token值,再粘贴到查询用户信息的请求头,再运行;相当麻烦;因此在以上2步中间,我们需要插入一个step


3. 右键loginIn-->Insert Step-->Property Transfer,但是在进行Target设置时,不能直接把值传到user请求头中,所以,先自定义设置一个变量,把token值传递到这个变量,再进行变量引用

image.png


4. 右键Test Steps-->Add step-->Properties,并且自定义一个变量名称为token

image.png


5. 进行Property Transfer的设置如下,运行后查看Properties中token值获取成功

image.png

image.png

这里$.token表示获取根元素下的token对应的值。JSONPath详细请移步参考http://lemfix.com/topics/63

{
   "code": "200",
   "message": "登录成功",
   "token": "40c6d6e2d2a949f6d988c275fd4725ab31b6c14c33c2bbbee0d787b911af58f1"
}

6. 从上面步骤可以看到token已经获取成功了,怎么传递到查询信息接口的请求头呢?直接${变量名}引用 ![image.png](http://testingpai.com/upload/file/2019/8047f5c8-d4f3-4a6d-89c7-47ffcbfba138.png)
7. 双击TestCase,运行成功

image.png

image.png



### 3、Property Transfer 之 XPath

假设现在我们要从数据库获取某一个用户信息,然后去登录;soapui发起jdbc请求返回结果默认是xml格式的,这里要用到XPath表达式

  1. 发起JDBC Request,运行,返回数据库用户信息

image.png


2. 然后再从JDBC Request的返回结果中,获取到name值进行登录;这里右键JDBC Request-->Insert Step-->Property Transfer,然后进行如下设置

image.png


这里//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. 登录请求这里,不用做什么设置 ![image.png](http://testingpai.com/upload/file/2019/a7e396ea-f6ef-49c3-99cb-d129ae3c68ad.png)
4. 双击TestCase,运行,查看结果,成功

image.png

image.png

image.png


**soapui的关联方式就整理到这,希望大家学有所用**
1 操作
potato 在 2020-08-13 10:04:37 更新了该帖
回帖
请输入回帖内容 ...