实际登录过程为:
1. 打开/login页面
2. 登录
3. 自动调整至/dashboard页面
SoapUI的设计上,每一次请求后,都会清理掉cookie,于是设计的测试登录过程如下:
1. post:/login
2. 读取第一步的session,传递给下一步
3. get:/dashboard
1. 创建一个TestSuite
2. 新建一个TestCase,命名为login
3. 添加HTTP Request:login,设置Method为POST,在Requset参数配置参数(具体根据接口文档配置),勾选Post QueryString(对应于过程中的第一步)
4. 添加HTTP Request:dashboard,设置Method为GET(对应于第三步)
5. 在login和dashboard两步中添加Groovy Script
6. 在Groovy Script中传递cookie中的userSession信息
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(0) log.info "cookie : "+cookieNew //Put cookie to a StringMap def cookieMap = new StringToStringMap() cookieMap.put("Cookie",cookieNew) testRunner.testCase.getTestStepByName("dashboard").httpRequest.setRequestHeaders(cookieMap);
测试结果:
运行该Test Case
在TestCase Log中找到Step3的结果,打开后,查看Response Message中的HTML,可以看到dashboard页面
刚刚开始入门SoapUI,整个登录过程的测试,挺坎坷的。一直不知道session怎么传递。
首先看菜单,就觉得可以使用Property Transfer:
折腾了很久,都没有成功。也不想网上搜索的使用Property Transfer时,可以使用Select Source XPath
由于一直使用Property Transfer传递值不成功,仔细看了login那一步的Response Message,发现Raw中,有在cookie中写入usersSession
马上转为考虑从cookie中读取userSession。
但是我所找到的所有网上的读取cookie都是使用:
但是一直不成功,并且SoapUI一直报错说cookiesList为null,导致后面的代码无法执行。
一度放弃研究SoapUI,然后发现,login -- Response Message -- Raw中的是“set-cookie”,结果发现,这里大小写敏感。
参考:
1. Property Transfer使用:http://blog.csdn.net/wanglha/article/details/48286169
2. SoapUI设置Cookie:https://www.cnblogs.com/milo-xie/p/6431575.html