我希望将我的常规脚本外部化为文件。而不是
<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>
答案 0 :(得分: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脚本testStep 中使用evaluate
:
evaluate(new File('path/to/my.groovy'))
首先,我避免使用此选项来考虑上下文变量的可能问题,例如testRunner
,context
,log
...我使用选项创建 groovy testStep < / em>使它尽可能与SOAPUI方式相似。但是,使用evaluate
似乎是一个非常好且更容易的解决方法。