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
. в самом начале, прежде чем вы начнете смешивать.