一、测试背景:

1)接口测试需要完成注册-->登录-->充值,使用soapui构建好测试用例、设置断言后,运行结果如下:

2)recharge接口运行失败,继续查看该接口具体发送的请求及返回结果有无错误:

3)这里解释下JSESSIONID是干嘛用的。用户登录(login)向服务器发起请求,服务器会创建session会话保存用户的信息,并返回一个JSESSIONID值放到响应头set-cookie中。然后用户继续发起充值(recharge)请求,请求头cookie中会带上同一个JSESSIONID值提交到服务器,从而确定是同一个登录用户发出的请求,服务器就会放行资源,充值成功。

TestCase运行结果中,双击login运行step查看Respouse Message,切换到Raw视图,能看到JSESSIONID相关信息。那我们现在就是要从登录这个响应头中将JSESSSIONID获取到并赋给充值的请求头中。

二、如何实现cookie设置

1)右键Test Step -->Add Step -->Groovy Script,并命名为Setcookie。

2)在Setcookie中贴入以下代码:

import com.eviware.soapui.support.types.StringToStringMap

def cookiesList = testRunner.testCase.getTestStepByName("login").testRequest.response.responseHeaders["Set-Cookie"]
log.info cookiesList //Get the cookie
String cookieNew = cookiesList.get()
log.info "cookie : "+cookieNew //Put cookie to a StringMap
def cookieMap = new StringToStringMap()
cookieMap.put("Cookie",cookieNew) //Pass cookie to testStep "recharge" of testSuite
//testRunner.testCase.getTestStepByName("recharge").testRequest.setRequestHeaders(cookieMap); //Pass cookie to all testSteps of the project
def time_num= context.expand ('${#TestCase#cookieMap}') def testSuiteList = testRunner.testCase.testSuite.project.getTestSuiteList()
def testCaseList
def testStepList
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)
}
}
}

3)重新运行TestCase,运行成功。查看recharge(充值)请求详细信息,显示充值成功。

SoapUI之cookie设置的更多相关文章

  1. 浏览器因cookie设置HttpOnly标志引起的安全问题

    1.简介 如果cookie设置了HttpOnly标志,可以在发生XSS时避免JavaScript读取cookie,这也是HttpOnly被引入的 原因.但这种方式能防住攻击者吗?HttpOnly标志可 ...

  2. cookie设置

    问题: cookie设置好后,谷歌浏览器下-->只有本页面有值,但是在其它浏览器下正常. $.cookie("userName",$("#loginName&quo ...

  3. SoapUI 访问代理设置

    SoapUI 访问代理设置 by:授客 QQ:1033553122 问题描述: 运行SoapUI时,发现接口访问不通,如下图,提示"Connection to http://127.0.0. ...

  4. PHP如何清除COOKIE?PHP无法删除COOKIE?设置COOKIE有效期、COOKIE过期

    cookie和session的区别? http://www.cnblogs.com/phphuaibei/archive/2011/11/15/2250082.html PHP如何清除COOKIE?P ...

  5. ★★★【卡法 常用js库】: js汇合 表单验证 cookie设置 日期格式 电话手机号码 email 整数 小数 金额 检查参数长度

    [卡法 常用js库]: js汇合 表单验证  cookie设置  日期格式  电话手机号码  email  整数  小数  金额   检查参数长度 // +---------------------- ...

  6. iOS 和 H5 页面交互(WKWebview 和 UIWebview cookie 设置)

    iOS 和 H5 页面交互(WKWebview 和 UIWebview cookie 设置) 主要记录关于cookie相关的坑 1. UIWebview 1. UIWebview 相对比较简单 直接通 ...

  7. js中cookie设置、获取与清除

    // 设置cookie setCookie (cname, cpwd, exdays) { var exdate = new Date()// 获取时间 exdate.setTime(exdate.g ...

  8. cookie设置中文时的编码问题

    cookie设置中文时的编码问题:cookie在设置时不允许出现中文.非要设置中文的怎么办,看下面的解决方案: 方式1 def login(request): ret = HttpResponse(' ...

  9. Tornado中的Cookie设置

    Tornado中的cookie分为两种--普通cookie和安全cookie 普通cookie 1.创建cookie 原型 self.set_cookie(name, value, domain=No ...

随机推荐

  1. JS(JavaScript)的进一步了解3(更新中···)

    数据的三种存储方式 String   “ ” Array    [ ] Json    { } 所有编程语言java c python c++ 等 他们都是面向对象编程,面向对象必须有三大特点,封装, ...

  2. XSS漏洞学习笔记

    XSS漏洞学习 简介 xss漏洞,英文名为cross site scripting. xss最大的特点就是能注入恶意的代码到用户浏览器的网页上,从而达到劫持用户会话的目的. 说白了就是想尽办法让你加载 ...

  3. Go-延时函数defer

    关于延时调用函数(Deferred Function Calls)      延时调用函数基本语法如下: defer func_name(param-list) {} 当一个函数前有关键字 defer ...

  4. php 发邮件的2种方式(使用stmp类、使用socket协议)

    方式1:使用stmp类发送邮件 代码: stmp.php <?php header("Content-Type: text/html; charset=utf-8"); cl ...

  5. Python3环境搭建

    Python3环境搭建   Windows系统下安装Python3 Python3 下载 Python3 最新源码,二进制文档,新闻资讯等可以在 Python 的官网查看到: Python 官网:ht ...

  6. redis主从同步故障切换及集群配置

    一.redis是一中高性能的缓存数据库, 原理:1. 从服务器向主服务器发送 SYNC 命令.2. 接到 SYNC 命令的主服务器会调用BGSAVE 命令,创建一个 RDB 文件,并使用缓冲区记录接下 ...

  7. [原][译]我们为什么需要另一个c++测试框架?Catch||Why do we need yet another C++ test framework?

    翻译问题来源:https://github.com/catchorg/Catch2/blob/master/docs/why-catch.md 其他辅助博文:从Google Test 转到 Catch ...

  8. MySQL 存储过程返回多个值

    MySQL  存储过程返回多个值   在本教程中,您将学习如何编写/开发返回多个值的存储过程. MySQL存储函数只返回一个值.要开发返回多个值的存储过程,需要使用带有INOUT或OUT参数的存储过程 ...

  9. 使用PsPing测试Azure虚拟机的连通性

    Azure虚拟机启动后,如果在个人的PC上ping该虚拟机的public IP,会出现Request time out的信息,无法ping通.这是因为在 Azure 中,ICMP 包无法通过防火墙和负 ...

  10. Mac安装python3.x+pycharm+elasticsearch+常见报错处理(1)

    ---恢复内容开始--- mac安装python有两种方式:此处叙述官网安装下载. mac 自带python2.x版本,python2和3之间的差距还是有的.下面简单叙述我安装python3.7的过程 ...