SoapUI Groovy读取Excel + 数据给REST API + Assert Json

本文介绍了如何使用Groovy脚本在SoapUI中读取Excel数据,将其传递给REST API请求,并进行JSON断言。首先讲解了Groovy语言和SoapUI的基础知识,接着详细展示了如何设置REST请求,以及通过Groovy读取Excel文件内容。然后,文章演示了Script Assertion来解析JSON响应。最后,作者提到由于SoapUI在执行HTTP请求时可能造成客户端卡顿,建议使用Python进行自动化测试,并提供了Python版本的参考资料和交流群信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录:

  1. 前言
  2. SoapUI 设置REST Rquest请求
  3. Groovy 读取Excel传给TestCase设置的Properties
  4. Script Assertion解析Json
  5. 总结

一. 前言
学习groovy语言:
精通 Groovy

学习SoapUI使用:
SoapUI 测试REST API(接口测试)
手把手教你接口自动化测试 – SoapUI & Groovy

二. SoapUI 设置REST Rquest请求
请求接口:
https://sh-market.ruifusoft.com/app/v1/quote/user/query/stockdetail?marketcode=hk&stockcode=00001&graph_tab_index=0&k_not_refresh=0&stock_type=010104&request_id=1478768235224

TestCase设置Properties:
这里写图片描述

项目结构:
这里写图片描述

设置REST Rquest请求:
这里写图片描述

三. Groovy 读取Excel传给TestCase设置的Properties
Excel文档:百度网盘
这里写图片描述

Groovy脚本:

import org.apache.poi.hssf.usermodel.HSSFCell
<think>我们正在讨论如何使用SoapUI测试RESTfulAPI和消息传递接口。根据引用[2],SoapUI可以用于测试RESTful接口,每个TestRequest中可以添加GroovyScript来验证响应。此外,引用[3]提到SoapUI作为测试端测试接口调用,但主要针对WebService(SOAP),不过SoapUI同样支持REST。用户问题:如何使用SoapUI测试调用REST+Message接口?分析:1.RESTfulAPI测试:SoapUI支持发送HTTP请求(GET,POST,PUT,DELETE等)并验证响应。2.消息传递接口:可能是指基于消息的接口,如JMS、AMQP等。SoapUI本身可能不支持直接测试消息队列,但可以通过插件(如SoapUINGPro)或者结合其他工具进行测试。但用户问题中未明确消息传递接口的具体类型,这里我们主要关注RESTfulAPI。根据引用[2]的示例,我们可以编写Groovy脚本来验证响应。步骤:1.创建REST项目:在SoapUI中新建项目,选择REST类型,输入服务的URL。2.添加请求:在资源上右键,添加各种HTTP方法请求。3.设置请求参数:在请求中设置Headers、Query参数、请求体(对于POST/PUT)等。4.执行请求并查看响应。5.添加断言:可以使用内置的断言(如HTTP状态码、响应内容包含特定字符串等),也可以使用Groovy脚本进行复杂验证。示例:测试一个登录接口(POST请求)-请求URL:http://example.com/login-请求体:JSON格式,如{"username":"test","password":"test"}-验证:返回的JSON中包含access_token,并且不为空。在SoapUI中:1.新建REST项目,输入基URL:http://example.com2.添加资源:/login3.在资源上添加POST方法请求。4.在请求中设置:-Headers:Content-Type:application/json-请求体:输入上述JSON5.运行请求,查看响应。6.添加Groovy脚本断言(在TestRequest的Script标签页):```groovy//获取响应内容defresponse=messageExchange.response.responseContent//解析JSONdefjson=newgroovy.json.JsonSlurper().parseText(response)//验证access_token存在且不为空assertjson.access_token!=null&&json.access_token!=""```对于消息传递接口(如JMS),SoapUINGPro版本提供了JMS测试功能,但开源版本可能不支持。如果用户需要测试消息接口,可以考虑使用其他工具(如JMeter)或者编写自定义代码。由于用户问题中同时提到“消息传递接口”,但引用中未提供相关信息,我们主要回答RESTfulAPI的测试。因此,回答如下:</think>### 如何使用 SoapUI 测试 RESTful API 和消息传递接口 #### 一、RESTful API 测试步骤 1. **创建 REST 项目** - 打开 SoapUI → `File` → `New REST Project` - 输入 REST 服务的端点 URL(如 `https://api.example.com/resource`) 2. **配置请求参数** - **Method**:选择请求方法(GET/POST/PUT/DELETE) - **Params**:在 `Parameters` 标签页添加查询参数(如 `?id=123`) - **Headers**:在 `Headers` 标签页设置 `Content-Type: application/json` 等 - **Body**:在 `Request` 标签页输入 JSON/XML 格式的请求体(POST/PUT 请求需用) 3. **添加认证** - 在 `Auth` 标签页选择认证方式: - **Basic Auth**:输入用户名/密码 - **OAuth 2.0**:配置 Token 和回调 URL - **Bearer Token**:直接添加 Token 4. **执行请求与断言验证** - 点击 `Run` 按钮发送请求 - 在 `Assertions` 标签页添加验证规则: - 响应状态码(如 `200 OK`) - JSON/XML 路径断言(如 `$.data.status == "success"`) - 响应时间阈值 ```groovy // Groovy 脚本示例(验证响应中的 access_token) def response = messageExchange.response.responseContent def json = new groovy.json.JsonSlurper().parseText(response) assert json.access_token != null : "Token 生成失败" ``` [^2] #### 二、消息传递接口测试(如 JMS) > ⚠️ *SoapUI 开源版需安装插件(如 HermesJMS),Pro 版原生支持* 1. **配置 JMS 连接** - `File` → `Preferences` → `JMS Settings` 添加 JMS 提供者(如 ActiveMQ) - 设置连接工厂、队列名称和凭证 2. **发送/接收消息** - 创建 `JMS Request` 测试步骤 - 输入消息内容(XML/JSON/Text) - 使用 `Property Transfer` 提取响应消息中的字段 3. **异步消息验证** ```groovy // 监听队列并验证消息 def jmsService = com.eviware.soapui.impl.wsdl.support.jms.JMSEndpointFactory.getJmsService() def message = jmsService.receiveMessage("queueName", 5000) // 5秒超时 assert message != null : "未收到预期消息" ``` #### 三、高级功能 1. **数据驱动测试** - 使用 `DataSource` 步骤从 Excel/CSV 读取测试数据 - 通过 `DataSource Loop` 循环执行多组参数 2. **性能测试** - 右键请求 → `New TestSuite` → `New LoadTest` - 设置线程数、持续时间和吞吐量 3. **安全扫描联动** - 导出 SoapUI 请求到 Postman 集合 - 使用 Xray 或 Burp Suite 进行漏洞扫描 [^1] #### 四、常见问题解决 | 问题现象 | 解决方案 | |-------------------------|------------------------------| | 响应中文乱码 | 添加 Header: `Accept-Charset: UTF-8` | | SSL 证书错误 | `Preferences` → `SSL Settings` 导入证书 | | JMS 连接超时 | 检查防火墙和队列配置 | > **最佳实践**: > - 复杂逻辑用 Groovy 脚本扩展功能[^2] > - 敏感数据存储在 `SoapUI全局变量` 中加密管理 > - 使用 `TestSuite` 组织关联接口的测试流程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值