# 一 断言
测试指定的restful api是否正常,判断它的响应值是否符合预期标准,需要用到断言知识。在soapUI里断言使用的Groovy语言。在项目中测试起来非常简单,测试过程如下。
1,准备测试数据
以下是准备的测试数据,它是一个JSON格式的数据列表。在resources节点中,它包含3个用户消息子节点。
```
{
"total": 3,
"resources": [
{
"username": "test03-SD",
"created": "1496800026000",
"uuid": "8f6cae8a24ab4d0887dd5907430075e7",
"contractNumber": "131"
},
{
"username": "test02",
"created": "1489479452000",
"name": "8bbf9fded675472aa852cf1940bc8234",
"contractNumber": "133"
},
{
"username": "test01",
"created": "1487576620000",
"name": "156b396f9b354467b5d1d1a1014b2d10"
}
],
"time": "2017年06月13日 10时25分07秒",
"pageNum": 1
}
```
2 添加断言
在HTTP Request里添加断言,如下图所示。
![](https://img.kancloud.cn/8a/2b/8a2be7c6fa7df886d9c9c1531513ce40_969x169.png)
然后在弹出的Add Assertion窗口,选择Script项。
![](https://img.kancloud.cn/12/82/128286753965b454bd4e3d48b5da86c3_520x401.png)
3 判断total属性的值
使用Script Assertion 测试JSON 格式的列表,在Script Assertion 窗口中写入如下代码:
```
def booksRoot = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
def total = booksRoot.get("total");
assert total == 3
```
返回结果如下:
![](https://img.kancloud.cn/79/5e/795e3f38df65287078c1d9c59b85e4bf_1053x641.png)
可以看到断言中total对应的值与测试值是一样的,如果故意写错,会怎么样呢?错误的断言如下:
```
def booksRoot = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
def total = booksRoot.get("total");
assert total == 10
```
返回结果如下:
![](https://img.kancloud.cn/32/26/3226290f8e7662981c23c43cfcca9a58_1031x617.png)
可以看到soapUI提示断言中total的判断是错误的,应该为3。
4 判断resources节点的长度
使用的断言脚本如下:
~~~
def root = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
def resources = root.get("resources");
assert resources.size() == 3
~~~
5 判断resource第一个节点的username属性为test03-SD
~~~
def root = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
def resources = root.get("resources");
assert resources[0].get('username') == 'test03-SD'
~~~
# 二 例子
1,测试带参数的restful api
请求地址:
http://127.0.0.1:8083/auth/api/v2/user/userList?param={"user\_userType":"1","startpage":"1","pagesize":"10","morgId":"e1339799-628e-11e6-9e1b-e0db55cd9154"}
请求方法: get
返回json格式数据:
```
[
{
"uuid": "053c951668a04144addc3336fc3967ad",
"created": 1491976927000,
"username": "吉林域管理员",
"password": null,
"firstname": "吉林",
"lastname": null,
"email": "123@qq.com",
"state": "enabled",
"apiKey": null,
"secretKey": null,
"salt": "c271b448fe2bf0dacadc7680a85116bc",
"userType": "1",
"tenantId": null,
"sex": "2",
"location": null,
"contractNumber": null,
"qq": null,
"photoPath": null,
"incorrectLoginAttempts": 0,
"roleList": null,
"tenantName": null,
"morgId": "9ea8e621-628e-11e6-9e1b-e0db55cd9154",
"morgName": "吉林分公司",
"userMorgUuid": null,
"uorgName": null,
"uorgPath": null,
"projectName": null,
"morgPath": "//吉林分公司",
"roleUuid": null,
"userIds": null
},
{
"uuid": "088d6cf6a9c345b2b7191fe9a8366fcb",
"created": 1487226069000,
"username": "湖北域管理员2345",
"password": null,
"firstname": "111",
"lastname": null,
"email": "1@1.cn",
"state": "enabled",
"apiKey": null,
"secretKey": null,
"salt": "a41cd19102835984efba2f03af18b619",
"userType": "1",
"tenantId": null,
"sex": "1",
"location": null,
"contractNumber": null,
"qq": null,
"photoPath": null,
"incorrectLoginAttempts": 0,
"roleList": null,
"tenantName": null,
"morgId": "9ebbe3c1-628e-11e6-9e1b-e0db55cd9154",
"morgName": "湖北分公司",
"userMorgUuid": null,
"uorgName": null,
"uorgPath": null,
"projectName": null,
"morgPath": "//湖北分公司",
"roleUuid": null,
"userIds": null
}
]
```
soapUI中Http Requst配置,添加请求参数。
![](https://img.kancloud.cn/1a/10/1a10391991fd2bccdfbb571a9c0d695a_965x387.png)
测试断言:
~~~
def root = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
log.info( root.size() )
assert root.size() == 2
~~~
- 第一章-测试理论
- 1.1软件测试的概念
- 1.2测试的分类
- 1.3软件测试的流程
- 1.4黑盒测试的方法
- 1.5AxureRP的使用
- 1.6xmind,截图工具的使用
- 1.7测试计划
- 1.8测试用例
- 1.9测试报告
- 2.0 正交表附录
- 第二章-缺陷管理工具
- 2.1缺陷的内容
- 2.2书写规范
- 2.3缺陷的优先级
- 2.4缺陷的生命周期
- 2.5缺陷管理工具简介
- 2.6缺陷管理工具部署及使用
- 2.7软件测试基础面试
- 第三章-数据库
- 3.1 SQL Server简介及安装
- 3.2 SQL Server示例数据库
- 3.3 SQL Server 加载示例
- 3.3 SQL Server 中的数据类型
- 3.4 SQL Server 数据定义语言DDL
- 3.5 SQL Server 修改数据
- 3.6 SQL Server 查询数据
- 3.7 SQL Server 连表
- 3.8 SQL Server 数据分组
- 3.9 SQL Server 子查询
- 3.10.1 SQL Server 集合操作符
- 3.10.2 SQL Server聚合函数
- 3.10.3 SQL Server 日期函数
- 3.10.4 SQL Server 字符串函数
- 第四章-linux
- 第五章-接口测试
- 5.1 postman 接口测试简介
- 5.2 postman 安装
- 5.3 postman 创建请求及发送请求
- 5.4 postman 菜单及设置
- 5.5 postman New菜单功能介绍
- 5.6 postman 常用的断言
- 5.7 请求前脚本
- 5.8 fiddler网络基础及fiddler简介
- 5.9 fiddler原理及使用
- 5.10 fiddler 实例
- 5.11 Ant 介绍
- 5.12 Ant 环境搭建
- 5.13 Jmeter 简介
- 5.14 Jmeter 环境搭建
- 5.15 jmeter 初识
- 5.16 jmeter SOAP/XML-RPC Request
- 5.17 jmeter HTTP请求
- 5.18 jmeter JDBC Request
- 5.19 jmeter元件的作用域与执行顺序
- 5.20 jmeter 定时器
- 5.21 jmeter 断言
- 5.22 jmeter 逻辑控制器
- 5.23 jmeter 常用函数
- 5.24 soapUI概述
- 5.25 SoapUI 断言
- 5.26 soapUI数据源及参数化
- 5.27 SoapUI模拟REST MockService
- 5.28 Jenkins的部署与配置
- 5.29 Jmeter+Ant+Jenkins 搭建
- 5.30 jmeter脚本录制
- 5.31 badboy常见的问题
- 第六章-性能测试
- 6.1 性能测试理论
- 6.2 性能测试及LoadRunner简介
- 第七章-UI自动化
- 第八章-Maven
- 第九章-测试框架
- 第十章-移动测试
- 10.1 移动测试点及测试流程
- 10.2 移动测试分类及特点
- 10.3 ADB命令及Monkey使用
- 10.4 MonkeyRunner使用
- 10.5 appium工作原理及使用
- 10.6 Appium环境搭建(Java版)
- 10.7 Appium常用函数(Java版)
- 10.8 Appium常用函数(Python版)
- 10.9 兼容性测试