SOAPUI: включение Groovy script из внешнего файла

Как включить groovy script из внешнего файла? 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?

Ответ 1

Самый простой способ - использовать Groovy Test Step в SOAPUI для запуска внешнего сценария с помощью GroovyScriptEngine. Я использую 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()

Ответ 2

Вы также можете создавать свои скрипты в java (eclipse), а затем экспортировать его как банку и добавить в soapui.

Вот шаг:

  • Создайте свой код в классах Java внутри пакета.
  • Щелкните правой кнопкой мыши на пакете и экспортируйте (выберите jar)
  • Добавьте эту банку в папку soapui/bin/ext (не забудьте закрыть soapui до этого шага)
  • перезапустите soapui, и теперь вы можете импортировать и использовать скрипты внутри soapui, как показано ниже.

  • Создайте шаг groovy и импортируйте банку

    имя пакета импорта. имя класса

  • Вызвать функцию как:

    имя класса класса. (параметр);

Ответ 3

Попробуйте следующее:

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

Или даже это:

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

Ответ 4

Для сообщения об ошибке mixin вы можете избавиться от этого, если используете ExpandoMetaClass.enableGlobally(), а затем this.metaClass = null. в самом начале, прежде чем вы начнете смешивать.