[toc]
# Script Assertion
脚本断言运行一个脚本来执行对消息的自定义检查。你可以验证消息内容、headers 、属性和其他组成部分。
## 适用场景
您可以在 ReadyAPI 套件的不同应用程序中使用这个断言。根据应用程序的不同,断言验证以下数据:
| 应用 | 检查数据 | 更多信息 |
| --- | --- | --- |
| [SoapUI](SoapUI.md) | request 和 response | [SoapUI 断言](断言.md) |
| [Secure](Secure.md) | response | [Secure 断言](Secure断言.md) |
| [ServiceV](ServiceV.md) | request | [ServiceV 断言](ServiceV断言.md) |
## 创建断言
1、在对话框的左边,选择 **Script** 类别。
2、在对话框的右边,选择 **Script Assertion** 。
3、点击 **Add** 。
**SoapUI**
![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/create-soap.png)
**Secure**
![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/create-secure.png)
**ServiceV**
![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/create-servicev.png)
## 设置断言
1、编写脚本,验证数据。
![](https://support.smartbear.com/readyapi/docs/_images/testing/assertions/reference/script.png)
>[info]提示:使用 `CTRL + 鼠标滚轮` 调整编辑器字体大小。
断言脚本中的可用对象:
| 对象 | 描述 |
| --- | --- |
| log | Apache [Logger](http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html) 对象,用于打印测试日志。 |
| context | [TestCaseRunContext](https://support.smartbear.com/readyapi/apidocs/soapui/com/eviware/soapui/model/testsuite/TestCaseRunContext.html) 对象,提供了测试步骤和测试执行相关接口。 |
| messageExchange | [MessageExchange](https://support.smartbear.com/readyapi/apidocs/soapui/com/eviware/soapui/model/iface/MessageExchange.html) 对象,提供了请求、响应数据的接口和请求执行相关信息。 |
2、点击 <img class="aqInlineImg" src="https://support.smartbear.com/readyapi/docs/_images/icon/run.png" > 运行脚本。
>[warning]务必在脚本中添加至少一个 assert 语句来设置断言 。
## 示例
断言 response 的 HTTP header 存在:
```groovy
// Check for the Amazon ID header
assert messageExchange.responseHeaders["x-amz-id-1"] != null
```
断言响应时间在规定时间内:
~~~groovy
// Check whether the response time is less than 400 ms
assert messageExchange.timeTaken < 400
~~~
断言附件存在:
~~~groovy
// Check whether there are 2 attachments available
assert messageExchange.responseAttachments.length == 2
~~~
断言 XML 元素 `RequestId` 存在:
~~~groovy
// Check for the RequestId element in the response
def holder = new XmlHolder( messageExchange.responseContentAsXml )
assert holder["//ns1:RequestId"] != null
~~~
---
**参考资料**
1、[ReadyAPI Documentation / Testing APIs / Verifying Results / Assertion Reference / Script Assertion](https://support.smartbear.com/readyapi/docs/testing/assertions/reference/script.html)
---
:-: --- 贡献者名单(排名不分先后) ---
:-: **材料**
:-: **编写**
李云
:-: **校验**
:-: **支持**
- 基础知识
- 属性
- 属性分类
- 属性扩展
- Get Data 对话框
- 断言
- 关于断言
- 使用断言
- 断言类型
- Response SLA
- Script
- Property Content Assertions
- Contains
- Equals
- Equals Binary
- JSONPath Count
- JSONPath Existence Match
- JSONPath Match
- JSONPath RegEx Match
- Message Content
- Not Contains
- XPath Match
- XQuery Match
- Compliance Assertions
- Swagger Compliance
- Schema Compliance
- HTTP Header Exists
- HTTP Header Equals
- JDBC Assertions
- 复制断言
- 术语
- 脚本
- 关于脚本
- 脚本编辑器
- JSONPath
- Projects
- SoapUI
- 测试步骤
- Groovy Script
- DataSource
- Conditional GoTo
- REST Request
- ReadyAPI
- 环境
- 关于环境
- 创建环境
- Rest Services
- Custom Properties
- JDBC Connections
- 团队协作
- 集成
- GitLab
- 第三方库
- Groovy 库
- Java 库
- 自定义ReadyAPI
- 首选项
- 全局属性
- ReadyAPI
- Code Templates
- JVM 设置
- 修改
- 实战指导
- 项目属性
- Groovy
- 代码片段
- 开发规范 v0.1
- 属性
- inbox
- FAQ
- 安装配置
- 复合工程
- 修改文件夹或文件名称