2017-07-05 82 views
0

我想將我的groovy腳本外化爲文件。取而代之的在測試步驟定義中定義外化的groovy文件

<con:testStep type="groovy" name="Init" id="ba3d9999-6cf7-4697-ac71-2472a61f16fc"> 
    <con:settings/> 
    <con:config> 
     <script>log.info "[ isr::CallbackController::Init ] "</script> 
    </con:config> 
</con:testStep> 

我喜歡的東西是這樣的:

<con:testStep type="groovy" name="Init" id="ba3d9999-6cf7-4697-ac71-2472a61f16fc"> 
    <con:settings/> 
    <con:config> 
     <script file="path/to/my.groovy"/> 
    </con:config> 
</con:testStep> 
+2

你知道這是否由soapUI支持? – Rao

+2

@Rao我認爲目前是不可能的,因爲'script'是* groovy腳本TestStep *中的一個屬性,它直接包含腳本,並且查看自定義屬性,我沒有看到任何可以支持的屬性。 – albciff

回答

2

我認爲這不是目前在SOAPUI支持,也許你可以添加一個功能請求,它:)。

但是在此期間,或許下面的棘手解決方法可能對您有用。

我的目的是創建一個groovy腳本testStep,它從文件中讀取腳本,動態創建groovy testStep,設置腳本文件內容,執行這個新的動態創建的testStep,並最終刪除它,以便它可以多次運行它。請參見後續腳本:

import com.eviware.soapui.impl.wsdl.teststeps.registry.GroovyScriptStepFactory 

// read the file with your script 
File f = new File('path/to/my.groovy') 

def tc = testRunner.testCase 
// create a empty groovy testStep in the current testCase 
def groovyTS = tc.addTestStep(GroovyScriptStepFactory.GROOVY_TYPE, "Groovy testStep dinamic") 

// set the file script as a content 
groovyTS.properties["script"].value = f.text 

// run the the created testStep with your script 
groovyTS.run(testRunner,context) 

// once runned delete it 
tc.removeTestStep(groovyTS) 

由於@Rao備註欄中,也許一個簡單的方法來做到這一點,公司在Groovy腳本簡單地使用evaluate一步步測試爲:

evaluate(new File('path/to/my.groovy')) 

起初我避免使用這種方法考慮上下文變量可能出現的問題,如testRunner,context,log ......並且我使用該選項創建常規測試步驟以儘可能地使其與SOAPUI方式保持相似。但使用evaluate似乎是一個非常好的和更容易的解決方法。

+1

這是很好的解決方法。很高興見到你,等待很長時間。評估也是另一種選擇? – Rao

+1

感謝您的友好的話:),我在這個日子裏......但是沒有回答很長時間。你是完全正確的,「評估」這是一個很好的選擇,起初我避免了它,因爲我認爲可能會遇到諸如'testRunner','context'等上下文變量的一些問題......但似乎它們正常工作,像往常一樣謝謝你的提示! – albciff

+0

總是我有一種感覺,如果你會更積極地回答更多%的問題。你再一次展示了運動員的精神。不僅僅是我,而是社區最近想念你,希望等待結束。 – Rao

相關問題