🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 一 断言 测试指定的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 ~~~