How do I parameterize XML
I'm brand new to SOATest, so this is probably a very basic question. The Rest service that I'm testing requires a unique name in the <name> field, so I'd like to use a date time stamp. At the moment, I have the following XML
<service>
<name>/registerService/update1</name>
<description>service to let implementers to register service</description>
<type>A</type>
<isActive>Y</isActive>
<tokenAgeUnit>D</tokenAgeUnit>
<tokenAgeValue>9</tokenAgeValue>
</service>
in the Payload section. I want to replace the "update1" with the date time stamp.
Scott
<service>
<name>/registerService/update1</name>
<description>service to let implementers to register service</description>
<type>A</type>
<isActive>Y</isActive>
<tokenAgeUnit>D</tokenAgeUnit>
<tokenAgeValue>9</tokenAgeValue>
</service>
in the Payload section. I want to replace the "update1" with the date time stamp.
Scott
0
Comments
To replace the "update1" value in the "name" element with a date and time stamp, first, you will need a script to generate the date and time stamp.
Below is a sample script that will get the date and time, format it according to a given pattern, and return the "name" element containing the date and time stamp...
from java.util import *
def getTime():
# Get an instance of the calendar
calendar = Calendar.getInstance()
# Set the hour in the calendar
hour = calendar.get(Calendar.HOUR_OF_DAY)
calendar.set(Calendar.HOUR_OF_DAY, hour)
# Retreive the date from the calendar
date = calendar.getTime()
# Create the date formatter
myFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
formatter = SimpleDateFormat(myFormat)
# Create the date and time stamp, and print and return the name value
timestamp = formatter.format(date)
name = "/registerService/" + timestamp
print name
return name
Now that you have a script written, you'll need to set up your REST client test to use it. To do this...
1) Open the test configuration panel for your REST client test
2) Switch to the "Payload" tab
3) For "Input Mode", select "Form XML" from the drop-down menu
4) Select the "name" element on the left
5) Under "Value" on the right, select "Script" from the drop-down menu
6) Click "Edit Script"
7) For "Language", select "Jython"
8) Make sure the "Text" radio button is selected
9) Paste the script into the text box
10) Click "Evaluate" and make sure no errors appear
11) Make sure that getTime() is selected for "Method"
12) Click "OK"
13) Save your REST client test
After running your test, you should open the "Traffic Viewer" for the test to verify that the request XML contains the properly formatted "name" element with the
required date and time stamp. I've tested the sample XML you gave me along with the script and everything seems to work properly on my end.
Let me know if you have any additional questions...
Regards,
Adam
Jython was not an available selection in the language drop down, and I don't see an evaluate button. I'm using v6.2. Could that be the reason?
Your solution worked, however, with Python selected as the language.
Thanks again,
Scott
No problem! Glad everything worked out.
You're right about Jython not being available as a language and "Evaluate" being unavailable in version 6.2 of SOAtest.
I just tested the script in my SOAtest 6.2 to verify.
Regards,
Adam
Hello Adam,
I am currently looking to do input method scripting using java.
if possible please suggest scripting code for method and URL in case of REST service.