1. 程式人生 > >基於 SoapUI 工具測試 Rest 服務

基於 SoapUI 工具測試 Rest 服務

  # 基於 Jersey 框架搭建 Rest 服務( Jersey 2.22.2 )
  https://code.csdn.net/snippets/1633225/master/snippet_file_0.txt/raw 
    
# SoapUI 中的自定義屬性
語法 : ${[scope]propertyName[#xpath-expression]} 
  Projects  級別 : ${#Project#propertyName}
  TestSuite 級別 : ${#TestSuite#propertyName}
  TestCases 級別 : ${#TestCase#propertyName}
參考連結 
 

https://www.soapui.org/scripting---properties/property-expansion.html 
  
2.2 通過 SoapUI 測試登入介面
2.2.1 建立 Project
 

# 這裡輸入登入介面的 url (任意一個 Rest 介面的 url 都可以)


2.2.2  測試登入介面


2.2.3 建立測試用例


 



2.2.4 校驗  登入介面  用例執行結果





# 將登入介面返回的 token 和 sessionId 資訊儲存到變數中

def tokenStr = messageExchange.responseHeaders["token"][0];
def cookieList = messageExchange.responseHeaders["Set-Cookie"];
def respText = messageExchange.responseContent;
def sessionId = "";
// get sessionId from header 
for (def newCookie : cookieList) {
    def start = newCookie.indexOf("JSESSIONID=");
    if (start == -1) {
        continue;
    }
    def end = newCookie.indexOf(";", start + 1);
    if (end == -1) {
        end = newCookie.length();
    }
    sessionId = newCookie.substring(start + "JSESSIONID=".length(), end);
    break;
}
log.info "token = **" + tokenStr + "**";
log.info "sessionId = **" + sessionId + "**";
log.info "respText = **" + respText + "**";
// save token and sessionId to testCase property
messageExchange.modelItem.testStep.testCase.setPropertyValue("token", tokenStr);
messageExchange.modelItem.testStep.testCase.setPropertyValue("cookie", "JSESSIONID=" + sessionId);
// end 



2.2.5 新增查詢使用者的 Rest 介面





  









# 在日誌中輸出介面返回的使用者資訊

def jsonUtils = new groovy.json.JsonSlurper();
def respText = messageExchange.responseContent;

def jsonObj = jsonUtils.parseText(respText);
def userList = jsonUtils.parseText(jsonObj.data);
def firstUser = userList[0];
log.info "id = " + firstUser.id + ", name = " + firstUser.name;
// json obj to string 
// def jsonStr = new groovy.json.JsonBuilder(jsonObj).toPrettyString();



2.2.6 添加註銷的 Rest 介面








##################################################################################################

2.3 通過 SoapUI 的 Mock Service 功能模擬 Rest 介面的服務端

2.3.1 新建一個 Mock Service



2.3.2 設定 Mock Service 的路徑和埠


2.3.3 新增登入介面






2.3.4 新增查詢使用者介面





2.3.5 添加註銷介面





2.3.6 啟動 Mock Service



2.3.7 修改測試用例訪問的 url (修改為 Mock Service 的 url)





2.3.8 執行測試用例來呼叫 Mock Service




# 在 Groovy Script 中獲取/設定屬性 
testRunner.testCase.getPropertyValue("MyProp")
testRunner.testCase.setPropertyValue("MyProp", someValue)
# 在 Script Assertion 中獲取/設定屬性 
messageExchange.modelItem.testStep.testCase.getPropertyValue("MyProp")
messageExchange.modelItem.testStep.testCase.setPropertyValue("MyProp", someValue)
# mock service 中獲取 request 
def req = mockRequest.getHttpRequest()
#  
https://www.soapui.org/scripting-properties/tips-tricks.html 

# end