soapui能测试http restful接口吗

 我来答
房访江苏
2017-05-24 · 超过15用户采纳过TA的回答
知道答主
回答量:46
采纳率:100%
帮助的人:9.7万
展开全部
版本:SoapUI 5.0.0
1、添加测试用例
点击File->New Rest Project,填入要测试的URI,确定进入编辑界面;
调整请求方式,添加请求参数,设置参数风格,这里要说一下:
style有五种,
QUERY是默认常用;
TEMPLATE是在路径中传参,形如:/api/test/{userId};
HEADER是添加在请求头中;
MATRIX和PLAIN我目前还没用到,等用到再跟新吧。
另外,如果是POST请求,会看到MediaType的选项,默认application/json,若要在请求体中添加json格式字符串,直接写在下面的文本栏中即可;若只是正常POST传参,需要勾选右边唯一的复选按钮(Post QueryStr...),其提示为:Controls if Query-Parameters should bu put in message body.
(如果请求参数要添加在请求体中就勾选)。
点击绿色小三角箭头,执行请求,会在右边显示响应结果,有XML,JSON,HTML三种展示类型,RAW可以查看响应头信息。
2、添加某个请求到TestCase
仅仅添加一个测试用例还算不上集成测试,添加成功后,点击绿色小三角右边的+按钮,将这个测试用例添加到一个现有的TestCase中(如果没有会创建一个)。
配置好各个域的名字后,可以看到TestSuite->TestCase->TestSteps->Test-Request。
我的需求是模拟用户登录,获取token和用户id,并用于后续的多个接口测试中。虽然需求比较简单,但基本可以涵盖SoapUI 各个测试案例间各种参数的共享与传递。这个也是我在初学SoapUI过程中的重点部分。
在TestSteps下,右键某一个TestRequest,选中InsertStep,可以看到一列选项,我选我用到的几个说明一下:
GrovyScript:用途不限于操作该TestCase中的Custom Properties(左键TestCase,在下方会看到)、操作某个自定义哥Properties、添加assert、输出log...
示例代码:
//获取当前TestCase
def testCase = messageExchange.modelItem.testStep.testCase;
//设置TestCase中的Custom Properties
testCase.setPropertyValue("key_testCase", “value_testCase”);
//打印这个key的value
log.info(" key_testCase -- " + testCase.getPropertyValue("key_testCase"));

//获取名称为Properties_1的Properties实例
def pro = testCase.getTestStepByName("Properties_1");
//设置这个实例中的key/value
pro.setPropertyValue("key_properties_1", “value_properties_1”);
//打印这个key的value
log.info(" key_properties_1 -- " + pro.getPropertyValue("key_properties_1"));

Properties:可以理解为当前TestStep范围内的局部变量集,在其中可以手动配置一些参数,也可以通过某个TestRequest中的Groovy脚本(对,groovy脚本也可以添加在任意一个TestRequest中) 来获取到这个Properties,然后通过编码来配置参数(见上述代码)。
Property Transfer : 当然是起“传输”的作用了,将某个源中的键值对传输到目标请求中。双击打开,添加一个,配置Source和Target。
添加、配置好多个测试案例后,双击TestSteps,点击绿色小三角,测试跑起来!
3、Script Assertion 验证响应结果
前面提到过,每一个TestRequest中都可以添加,其实就是写GroovyScript啦,在这里可以拿到响应的各种内容,写个assert来验证是否是期望的结果。 示例代码:

//比如测试用户正常登录后,要拿到token,作一个简单的验证(本响应体中内容是json格式)
//获取根节点
def root = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent);
def access_token = root.get("access_token");
log.info((access_token != null && access_token != ""?"success!":"failure!") +" --- msg : user loginning...");
assert access_token != null && access_token != " ";
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式