這兩天要對RESTful接口作測試,老大讓我用SoapUI試試,折騰了兩三天,測試項目基本成型了,在這裏記錄一下經驗。json
版本:SoapUI 5.0.0api
點擊File->New Rest Project,填入要測試的URI,肯定進入編輯界面;
調整請求方式,添加請求參數,設置參數風格,這裏要說一下:
style有五種,
QUERY是默認經常使用;
TEMPLATE是在路徑中傳參,形如:/api/test/{userId};
HEADER是添加在請求頭中;
MATRIX和PLAIN我目前還沒用到,等用到再跟新吧。
另外,若是是POST請求,會看到MediaType的選項,默認application/json,若要在請求體中添加json格式字符串,直接寫在下面的文本欄中便可;若只是正常POST傳參,須要勾選右邊惟一的複選按鈕(Post QueryStr...),其提示爲:Controls if Query-Parameters should bu put in message body.
(若是請求參數要添加在請求體中就勾選)。
點擊綠色小三角箭頭,執行請求,會在右邊顯示響應結果,有XML,JSON,HTML三種展現類型,RAW能夠查看響應頭信息。app
僅僅添加一個測試用例還算不上集成測試,添加成功後,點擊綠色小三角右邊的+按鈕,將這個測試用例添加到一個現有的TestCase中(若是沒有會建立一個)。
配置好各個域的名字後,能夠看到TestSuite->TestCase->TestSteps->Test-Request。
個人需求是模擬用戶登陸,獲取token和用戶id,並用於後續的多個接口測試中。雖然需求比較簡單,但基本能夠涵蓋SoapUI 各個測試案例間各類參數的共享與傳遞。這個也是我在初學SoapUI過程當中的重點部分。
在TestSteps下,右鍵某一個TestRequest,選中InsertStep,能夠看到一列選項,我選我用到的幾個說明一下:
GrovyScript:用途不限於操做該TestCase中的Custom Properties(左鍵TestCase,在下方會看到)、操做某個自定義哥Properties、添加assert、輸出log...
示例代碼:測試
//獲取當前TestCase def testCase = messageExchange.modelItem.testStep.testCase; //設置TestCase中的Custom Properties testCase.setPropertyValue("key_testCase", 「value_testCase」); //打印這個key的value log.info(" key_testCase -- " + testCase.getPropertyValue("key_testCase")); //獲取名稱爲Properties_1的Properties實例 def pro = testCase.getTestStepByName("Properties_1"); //設置這個實例中的key/value pro.setPropertyValue("key_properties_1", 「value_properties_1」); //打印這個key的value log.info(" key_properties_1 -- " + pro.getPropertyValue("key_properties_1"));
Properties:能夠理解爲當前TestStep範圍內的局部變量集,在其中能夠手動配置一些參數,也能夠經過某個TestRequest中的Groovy腳本(對,groovy腳本也能夠添加在任意一個TestRequest中) 來獲取到這個Properties,而後經過編碼來配置參數(見上述代碼)。
Property Transfer : 固然是起「傳輸」的做用了,將某個源中的鍵值對傳輸到目標請求中。雙擊打開,添加一個,配置Source和Target。
添加、配置好多個測試案例後,雙擊TestSteps,點擊綠色小三角,測試跑起來!ui
前面提到過,每個TestRequest中均可以添加,其實就是寫GroovyScript啦,在這裏能夠拿到響應的各類內容,寫個assert來驗證是不是指望的結果。
示例代碼:編碼
//好比測試用戶正常登陸後,要拿到token,做一個簡單的驗證(本響應體中內容是json格式) //獲取根節點 def root = net.sf.json.JSONSerializer.toJSON(messageExchange.responseContent); def access_token = root.get("access_token"); log.info((access_token != null && access_token != ""?"success!":"failure!") +" --- msg : user loginning..."); assert access_token != null && access_token != " ";
個人工做目前基本就用到這些,這個流程在SoapUI中也能夠有別的方法來實現,僅僅是SoapUI集成測試中的冰山一腳~code