Forum Discussion

Said's avatar
Said
Contributor
5 years ago

formula in property test step

Hi,

I would like to have a date formula in a property test step that gets date from another property and adds extra days to it. I know I can do this easily in groovy, but I am wondering if this is possible via "formula" in property. Here is my example to illustrate the issue...

 

I have a property test step with 3 properties:

 

dateFormula = ${=new Date().plus(7).format( 'yyyy-MM-dd' )}T08:00:00
dateFromString= ${= Date.parse("yyyy-MM-dd'T'HH:mm:ss", "2019-12-13T08:15:00").plus(7).format("yyyy-MM-dd'T'HH:mm:ss")}
dateFromString2 = ${= Date.parse("yyyy-MM-dd'T'HH:mm:ss", ${Properties#dateFormula}).format("yyyy-MM-dd'T'HH:mm:ss")}

 

dateFromString has a hard coded date. dateFromString2 should the date from dateFormula property. 

 

Then I have a groovy script that just prints them:

log.info context.expand( '${Properties#dateFormula}' )
log.info context.expand( '${Properties#dateFromString}' )
log.info context.expand( '${Properties#dateFromString2}' )

This is the output (log.info):

Wed Dec 11 08:45:02 CET 2019: INFO: 2019-12-18T08:00:00
Wed Dec 11 08:45:02 CET 2019: INFO: 2019-12-13T08:15:00
Wed Dec 11 08:45:02 CET 2019: INFO: startup failed:
Script64.groovy: 1: expecting ')', found 'T08' @ line 1, column 48.
   -MM-dd'T'HH:mm:ss", 2019-12-18T08:00:00)
                                 ^
org.codehaus.groovy.syntax.SyntaxException: expecting ')', found 'T08' @ line 1, column 48.
	at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:143)
	at org.codehaus.groovy.antlr.AntlrParserPlugin.parseCST(AntlrParserPlugin.java:111)
	at org.codehaus.groovy.control.SourceUnit.parse(SourceUnit.java:237)
	at org.codehaus.groovy.control.CompilationUnit$1.call(CompilationUnit.java:167)
	at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:931)
	at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:593)
	at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:569)
	at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:546)
	at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
	at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
	at groovy.lang.GroovyShell.parseClass(GroovyShell.java:694)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:706)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:742)
	at groovy.lang.GroovyShell.parse(GroovyShell.java:733)
	at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.recompileWithNewName(SoapUIGroovyScriptEngine.java:155)
	at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.compile(SoapUIGroovyScriptEngine.java:146)
	at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:95)
	at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SoapUIProGroovyScriptEngineFactory.java:83)
	at com.eviware.soapui.model.propertyexpansion.resolvers.EvalPropertyResolver.doEval(EvalPropertyResolver.java:161)
	at com.eviware.soapui.model.propertyexpansion.resolvers.EvalPropertyResolver.resolveProperty(EvalPropertyResolver.java:148)
	at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expand(PropertyExpander.java:213)
	at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expand(PropertyExpander.java:221)
	at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expand(PropertyExpander.java:156)
	at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expand(PropertyExpander.java:152)
	at com.eviware.soapui.model.propertyexpansion.PropertyExpander.expandProperties(PropertyExpander.java:131)
	at com.eviware.soapui.model.support.AbstractSubmitContext.expand(AbstractSubmitContext.java:227)
	at com.eviware.soapui.model.testsuite.TestRunContext$expand.call(Unknown Source)
	at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
	at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
	at Script6.run(Script6.groovy:16)
	at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:98)
	at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SoapUIProGroovyScriptEngineFactory.java:83)
	at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:158)
	at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction$1.run(GroovyScriptStepDesktopPanel.java:331)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: Script64.groovy:1:48: expecting ')', found 'T08'
	at groovyjarjarantlr.Parser.match(Parser.java:211)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.methodCallArgs(GroovyRecognizer.java:11990)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.pathElement(GroovyRecognizer.java:11567)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.pathExpression(GroovyRecognizer.java:11697)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.postfixExpression(GroovyRecognizer.java:13410)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.unaryExpressionNotPlusMinus(GroovyRecognizer.java:13379)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.powerExpressionNotPlusMinus(GroovyRecognizer.java:13083)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.multiplicativeExpression(GroovyRecognizer.java:13015)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.additiveExpression(GroovyRecognizer.java:12685)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.shiftExpression(GroovyRecognizer.java:9921)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.relationalExpression(GroovyRecognizer.java:12590)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.equalityExpression(GroovyRecognizer.java:12514)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.regexExpression(GroovyRecognizer.java:12462)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.andExpression(GroovyRecognizer.java:12430)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.exclusiveOrExpression(GroovyRecognizer.java:12398)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.inclusiveOrExpression(GroovyRecognizer.java:12366)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.logicalAndExpression(GroovyRecognizer.java:12334)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.logicalOrExpression(GroovyRecognizer.java:12302)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.conditionalExpression(GroovyRecognizer.java:4956)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.assignmentExpression(GroovyRecognizer.java:8122)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.expression(GroovyRecognizer.java:10061)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.expressionStatementNoCheck(GroovyRecognizer.java:8449)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.expressionStatement(GroovyRecognizer.java:8995)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.statement(GroovyRecognizer.java:1278)
	at org.codehaus.groovy.antlr.parser.GroovyRecognizer.compilationUnit(GroovyRecognizer.java:668)
	at org.codehaus.groovy.antlr.AntlrParserPlugin.transformCSTIntoAST(AntlrParserPlugin.java:134)
	... 37 more

1 error

What am I doing wrong in formula of dataFromString2? How can I resolve this issue?

 

Thanks in advance!

 

  • add " around the ${Properties#dateFormula} value in dateFromString2 and it should work

    i.e.

    DateString2 = ${= Date.parse("yyyy-MM-dd'T'HH:mm:ss", "${Properties#dateFormula}").format("yyyy-MM-dd'T'HH:mm:ss")}

     

  • add " around the ${Properties#dateFormula} value in dateFromString2 and it should work

    i.e.

    DateString2 = ${= Date.parse("yyyy-MM-dd'T'HH:mm:ss", "${Properties#dateFormula}").format("yyyy-MM-dd'T'HH:mm:ss")}