實際登錄過程為:
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