这两天要对RESTful接口作测试,老大让我用SoapUI试试,折腾了两三天,测试项目基本成型了,在这里记录一下经验。json
版本:SoapUI 5.0.0api
点击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能够查看响应头信息。app
仅仅添加一个测试用例还算不上集成测试,添加成功后,点击绿色小三角右边的+按钮,将这个测试用例添加到一个现有的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,点击绿色小三角,测试跑起来!ui
前面提到过,每个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 != " ";
个人工做目前基本就用到这些,这个流程在SoapUI中也能够有别的方法来实现,仅仅是SoapUI集成测试中的冰山一脚~code