Background:java
作API自動化的時候,每每須要針對每一個API編寫不少方法,這個時候爲了使代碼有更高的可讀性,維護性和擴展性,咱們須要把這不少方法編寫成外部的Groovy Script,而後向引用java class同樣的方式在TestStep中引用,這個時候就須要用到SoapUI的Script Library功能。測試
1.在SoapUI的File->Preferences->Ready!API 能夠設置SoapUI的默認腳本路徑和自定義腳本路徑:ui
2.SoapUI default script libraryspa
My path is : C:\Program Files\SmartBear\ReadyAPI-1.6.0\bin\scripts.net
其中「C:\Program Files\SmartBear\ReadyAPI-1.6.0」是SoapUI的安裝目錄,由於我本地用的是SoapUI Professional Version, 因此名字是ReadyAPI。blog
如上圖所示,我有兩個文件夾,一個是用於產品自動化測試的代碼,一個是用於我本身測試的代碼,在Groovy Script中調用的時候用package語句區別,即:若是想調用direct文件裏面存放的某些groovy腳本,就在「Groovy Script」 type的test step第一句加入:package direct。ip
具體調用以下:部署
3.Custom script library產品
在第一步中,我將該目錄設置成custom script library,如今我在該目錄下新建了一個Callee.groovy:自動化
調用方法以下:
4.SoapUI在script library裏查詢調用的groovy文件的前後順序:
由於在Setting中增長了兩個Script library,若是這兩個library中有一樣名稱的groovy文件,系統會優先調用哪個目錄下的文件呢?
爲了得出結果,我在custom script library中增長了一個文件:Callee2.groovy:
在default script library中一樣有這個名字的一個groovy文件哦,如今我這樣調用groovy文件:
根據輸出結果能夠看出:
a.系統將優先從custom script library中查詢調用的類Callee2,若是找不到,纔會去default script library中查找該類。
b.若是要調用default script library中的類,須要加入package語句。
(正如在Java Build Path folder下新建了一個package "com.vicky.test", 而後在這個package中添加了一個Test.groovy,那麼打開這個groovy文件,文件頭部自動回加入 「package com.vicky.test「 同樣的道理)
以上是更改本地整個SoapUI tool的script library,但有時候咱們並不須要修改該路徑,只是想給這個Project一個特殊的腳本庫,該腳本只適用於這一個單獨的Project。
例如:咱們將一個Project部署到Jenkins上面,而後Server上的Script Library並不須要修改,咱們只須要將這個特殊的腳本庫放到該Project代碼中便可,這時候須要用到Project level的」Project Properties「-》"Script Library".
將Script Library的值設爲該Project的當前工做目錄」${projectDir}",而後在Groovy script中加入package語句便可。
若這些腳本庫放在工做目錄的"ScriptLibrary"文件夾,那麼在調用該文件夾下面的groovy scripts的時候,只須要加入:
package ScriptLibrary
若調用了該ScriptLibrary中的groovy文件後,報錯"Reference to one class is ambiguous", 請參考另外一篇文章:https://my.oschina.net/u/942203/blog/916833
如果這些Groovy Script須要引用java的一些jar包,須要把這些jar包先在網上下載下來,而後放到「SoapUI安裝目錄\lib」或者「SoapUI安裝目錄\bin\ext」文件夾下面。