在上一次的公众号中,写过了怎么样来新建和保存soapui接口测试的日志,现在我们来看看用groovy传递cookie身份信息的方法。
上一篇链接地址:在soapui里面使用groovy脚本生成测试报告的方法
我们继续沿用上一个脚本,在接口测试套件的登录用例中,右键添加一个Groovy Script,然后重命名将这个脚本文件的名字改得更通俗易懂点儿,例如叫做"Set Cookie"
然后就是长段的groovy脚本编写了:
首先是预备动作,因为我们后期需要处理cookie的格式,所有先在脚本文件中导入字符串和映射类型转换的模块。
import com.eviware.soapui.support.types.StringToStringMap
然后我们想办法把登录接口获取到的响应信息头部中的cookie信息取出来,先看看响应信息中的cookie保存在哪里。
发现在登录接口的响应头部有一个Set-Cookie字段,我们现在通过这个key把它对应的value值捕获下来;
在整个运行的测试过程中,找到测试用例里面有个叫做login的测试步骤,将它的响应头部中Set-Cookie字段的值保存到一个变量中。
def cookiesList = testRunner.testCase.getTestStepByName("login").testRequest.response.responseHeaders["Set-Cookie"]
这个时候保存下来的cookiesList是一个数组类型,我们通过序号将数组里面的数据拿出来。
String cookieNew = cookiesList.get(0)
然后我们需要定义一个映射类型,让cookie最后的格式变成{"Cookie":xxxx}的样子。
def cookieMap = new StringToStringMap()
然后使用映射中的put方法将cookie内容新增进去。
cookieMap.put("Cookie",cookieNew)
接下来要做的事情就是把cookie的信息传递给测试套件中的每一个测试用例的每一个测试步骤了。
所以,先获取我现在拥有的所有的测试套件。
def testSuiteList = testRunner.testCase.testSuite.project.getTestSuiteList()
定义一个变量准备接收所有的测试用例
def testCaseList
定义一个变量准备接收所有的测试步骤
def testStepList
使用for循环来读取整个测试套件,然后在每一个套件中,用for循环读取每一个测试用例,最后在每一个用例中使用for循环读取每一个测试步骤,并且将cookie设置到每一个步骤中。
for(testSuite in testSuiteList){
testCaseList = testSuite.getTestCaseList()
for(testCase in testCaseList){
testStepList = testCase.getTestStepsOfType(com.eviware.soapui.impl.wsdl.teststeps.RestTestRequestStep.class)
for (testStep in testStepList){
testStep.testRequest.setRequestHeaders(cookieMap)
}
}
}
OK,舒服了,然后我们添加另一个需要测试的接口。运行测试用例。
下一次,我们来讲怎么添加响应数据的关联,以及进行接口参数化的方法。
谢谢大家的支持~