SOAPUI: comment inclure un script Groovy à partir d'un fichier externe
Comment puis-je inclure un script groovy à partir d'un fichier externe?
j'ai été tenté d'utiliser:
def script = new GroovyScriptEngine('d:/soapui/payment.v2').with {
loadScriptByName( 'proxy.groovy' )
}
this.metaClass.mixin script
Mais j'obtiens:
mise à Jour
il existe la possibilité d'emballer mes méthodes dans le pot, ou quelque chose comme cela, et l'utilisation de Script TextArea
?
4 réponses
la manière la plus simple est de l'exécuter en utilisant un Groovy Test Step within SOAPUI
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()
vous pouvez aussi créer vos scripts en java (eclipse), puis les exporter comme un jar et les ajouter dans soapui.
Voici le pas:
- créer votre code dans des classes java à l'intérieur d'un paquet.
- faites un clic droit sur le paquet et exportez (sélectionnez jar)
- ajouter ce pot au dossier soapui /bin/ext (assurez-vous de fermer soapui avant cette étape)
redémarrez soapui et maintenant vous pouvez importer et utiliser les scripts à l'intérieur de soapui comme dessous.
Créer un groovy étape et importer le jar
importer le nom du paquet.nom de la classe
Appel de la fonction:
nom de la classe.nom de la fonction(paramètre);
essaye ceci:
GroovyShell gs = new GroovyShell(getBinding());
gs.evaluate(new File('path/to/external.groovy').text);
Ou encore:
evaluate(new File('path/to/external.groovy'));
pour le message d'erreur mixin, vous pouvez vous en débarrasser si vous utilisez ExpandoMetaClass.enableGlobally()
et this.metaClass = null
. au tout début, avant de commencer le mixage.