SOAPUI:如何从外部文件中包含Groovy脚本

时间:2013-01-16 11:45:30

标签: groovy soapui

如何从外部文件中包含groovy脚本? enter image description here

我试图使用:

def script = new GroovyScriptEngine('d:/soapui/payment.v2').with { 
    loadScriptByName( 'proxy.groovy' ) 
} 
this.metaClass.mixin script

但我明白了:

enter image description here

更新

是否有可能将我的方法打包到jar或类似的东西中,并从Script TextArea使用它们?

4 个答案:

答案 0 :(得分:16)

最简单的方法是使用Groovy Test Step within SOAPUIGroovyScriptEngine运行它。使用GroovyUtils查找项目的路径,以便整个项目可以保存在一个地方以帮助控制源等。

import groovy.lang.Binding
import groovy.util.GroovyScriptEngine

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )

// location of script file is relative to SOAPUI project file.
String scriptPath = groovyUtils.projectPath + "/groovy/"

// Create Groovy Script Engine to run the script.
GroovyScriptEngine gse = new GroovyScriptEngine(scriptPath) 

// Load the Groovy Script file 
externalScript = gse.loadScriptByName("Utility.groovy")  

// Create a runtime instance of script
instance = externalScript.newInstance()

// Sanity check 
assert instance!= null

// run the foo method in the external script
instance.foo()

答案 1 :(得分:2)

您也可以在java(eclipse)中创建脚本,然后将其导出为jar并添加soapui。

以下是步骤:

  1. 在包内的java类中创建代码。
  2. 右键单击包并导出(选择jar)
  3. 将此jar添加到soapui / bin / ext文件夹(确保在此步骤之前关闭soapui)
  4. 重新启动soapui,现在您可以导入并使用soapui中的脚本,如下所示。

  5. 创建一个常规步骤并导入jar

    导入包name.class名称

  6. 将函数调用为:

    class name.function name(parameter);

答案 2 :(得分:1)

试试这个:

GroovyShell gs = new GroovyShell(getBinding()); 
gs.evaluate(new File('path/to/external.groovy').text);

甚至这个:

evaluate(new File('path/to/external.groovy'));

答案 3 :(得分:0)

对于mixin错误消息,如果您使用ExpandoMetaClass.enableGlobally()然后this.metaClass = null,则可能会删除它。在开始混音之前,最开始。