soapUI: Comment accéder au Test de l'Étape de la propriété à partir de l'affirmation de script?
Je suis nouveau sur SoapUI et Groovy, mais une expérience programmeur Java.
J'ai créé un cas de test avec deux Étapes de Test:
- Propriétés de l'étape appelée
CID
avec une seule propriétécorrelationID
et la valeur${=java.util.UUID.randomUUID()}
. Test Request
où j'ai mis<CorrelationID>${correlationID}</CorrelationID>
dans la demande.
Il fonctionne parfaitement et soumet unique CorrelationID
valeur chaque fois que je lance mes tests.
Maintenant, je veux ajouter un nouveau Script Affirmation de Test de l'Étape 2 (Test Request
) qui compare calculée correlationID
la valeur de la propriété à partir du Test de l'Étape 1 ( CID
), avec quelques données de Test de l'Étape 2 de la réponse. Le problème est que je ne peux pas semblent être en mesure d'accéder à généré de la valeur de correlationID
à partir de là.
Si j'essaye ceci: log.info "${correlationId}"
J'obtiens: No such property: correlationId for class: Script19
Si j'essaye ceci: log.info "${CID#correlationId}"
J'obtiens:
startup failed:
Script43.groovy: 1: unexpected char: '#' @ line 1, column 16.
log.info "${CID#correlationId}"
^
org.codehaus.groovy.syntax.SyntaxException: unexpected char: '#' @ line 1, column 16.
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:97)
at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:71)
at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:236)
at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:158)
at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:814)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:511)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:487)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:464)
at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:306)
at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:287)
at groovy.lang.GroovyShell.parseClass(GroovyShell.java:727)
at groovy.lang.GroovyShell.parse(GroovyShell.java:739)
at groovy.lang.GroovyShell.parse(GroovyShell.java:766)
at groovy.lang.GroovyShell.parse(GroovyShell.java:757)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.java:148)
at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:93)
at com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.GroovyScriptAssertion.assertScript(GroovyScriptAssertion.java:116)
at com.eviware.soapui.impl.wsdl.teststeps.assertions.basic.GroovyScriptAssertion.internalAssertResponse(GroovyScriptAssertion.java:133)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlMessageAssertion.assertResponse(WsdlMessageAssertion.java:156)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.assertResponse(WsdlTestRequest.java:189)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequest.setResponse(WsdlTestRequest.java:159)
at com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStep.run(WsdlTestRequestStep.java:346)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.runTestStep(WsdlTestCaseRunner.java:207)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:138)
at com.eviware.soapui.impl.wsdl.testcase.WsdlTestCaseRunner.internalRun(WsdlTestCaseRunner.java:39)
at com.eviware.soapui.impl.wsdl.support.AbstractTestRunner.run(AbstractTestRunner.java:135)
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: Script43.groovy:1:16: unexpected char: '#'
at org.codehaus.groovy.antlr.parser.GroovyLexer.nextToken(GroovyLexer.java:695)
at org.codehaus.groovy.antlr.parser.GroovyLexer$1.nextToken(GroovyLexer.java:248)
at groovyjarjarantlr.TokenBuffer.fill(TokenBuffer.java:69)
at groovyjarjarantlr.TokenBuffer.LA(TokenBuffer.java:80)
at groovyjarjarantlr.LLkParser.LA(LLkParser.java:52)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.nls(GroovyRecognizer.java:780)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.openOrClosableBlock(GroovyRecognizer.java:8848)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.stringConstructorValuePart(GroovyRecognizer.java:13449)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.stringConstructorExpression(GroovyRecognizer.java:11932)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.primaryExpression(GroovyRecognizer.java:11091)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.argumentLabel(GroovyRecognizer.java:10863)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.commandArgument(GroovyRecognizer.java:10756)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.commandArguments(GroovyRecognizer.java:10173)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.expressionStatement(GroovyRecognizer.java:8948)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(GroovyRecognizer.java:1258)
at org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:650)
at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:93)
... 31 more
1 error
Comment puis-je accéder que correlationId
valeur calculée à partir de mon affirmation Groovy script?
Merci
OriginalL'auteur parxier | 2011-02-18
Vous devez vous connecter pour publier un commentaire.
Le problème avec mon approche est que même si je n'ai accès à la propriété, il est dynamique et mon UUID est différente à chaque fois que je lis la valeur de la propriété.
Au lieu de cela, j'ai remplacé ma
Properties
étape de test avec le Script d'Installation du Cas de Test:À chaque fois que mon cas de test s'exécute, une nouvelle
uuid
est généré. Les étapes de test peut accéder à cet essai statique de cas au niveau de la propriété.Dans ma Demande de Test j'utilise:
Dans le script de l'assertion que j'utilise:
Grâce à Non gérée de SoapUI forums.
OriginalL'auteur parxier
Voulais ajouter que le contexte.getPropertyNames() ou le contexte.getProperties() ne liste pas les propriétés définies dans une 'Propriété' étape de Test.
C'est le contexte.développez(") fonctionne.
Dans un "Script Groovy" étape de test il est disponible automatiquement.
OriginalL'auteur shark8me
Pour obtenir les noms des propriétés de Test en cours d'Étape à partir d'un Script Affirmation, nous pouvons utiliser les codes suivants -
def testStepProp = context.getCurrentStep().getPropertyNames()
for(i=0; i<testStepProp.size(); i++){
log.info testStepProp[i]
}
Pour obtenir les noms des propriétés de courant de Cas de Test à partir d'un Script Affirmation, nous pouvons utiliser les codes suivants:
def testCaseProp = context.testCase.getPropertyNames()
for(i=0; i<testCaseProp .size(); i++){
log.info testCaseProp[i]
}
Pour obtenir la valeur d'une propriété à partir d'un script Affirmation:
Par Exemple, si mon nom de la propriété est 'correlationID' -
def myValue = context.testCase.getPropertyValue("correlationID") //If we are in same testCase
def myValue = context.testCase.testSuite.testCases["testCaseName"].getPropertyValue("correlationID") //If we are in different testCase
Veuillez noter que la "lanceur" ne fonctionne pas dans le script de l'Assertion. Au lieu de cela, nous devons utiliser le contexte.
OriginalL'auteur Chinmay Nanda