Hey @Rememo
Ok - I've worked out a way to do it - but it's not very elegant - I mean like - it's really awful coding - it does the job - but I hope ChrisAdams or nmrao dont see it! 🙂
I was hoping I could bodge an inline scripting property expansion, but alas - my groovy is rubbish hence my solution.
Ok - you're test case object hierarchy will need to be as follows (you have name value pairs in your example so I'm taking a guess on this is JSON/REST:
TestSuite
---TestCase
-----GroovyScript
-----Properties
-----REST (sources the 6 digit values)
Your Properties step will need a 6 properties created called 'randomString1', 'randomString2','randomString3', 'randomString4', 'randomString5', & 'randomString6',
Your Groovy step will need the following code:
//THIS IS REALLY HORRIBLE CODE - BUT WHAT DO YOU EXPECT? MY GROOVY'S RUBBISH!
import org.apache.commons.lang.RandomStringUtils
//generate a 6 digit random string and assign to the randomString1 variable
String randomString1 = RandomStringUtils.random(6, true, true)
//define the properties step and write the randomString1 value to the Properties step
def propertiesStep1 = context.testCase.testSteps["Properties"]
propertiesStep1.setPropertyValue("randomString1", randomString1)
//generate a 6 digit random string and assign to the randomString2 variable
String randomString2 = RandomStringUtils.random(6, true, true)
//define the properties step and write the randomString2 value to the Properties step
def propertiesStep2 = context.testCase.testSteps["Properties"]
propertiesStep2.setPropertyValue("randomString2", randomString2)
//generate a 6 digit random string and assign to the randomString3 variable
String randomString3 = RandomStringUtils.random(6, true, true)
//define the properties step and write the randomString3 value to the Properties step
def propertiesStep3 = context.testCase.testSteps["Properties"]
propertiesStep3.setPropertyValue("randomString3", randomString3)
//generate a 6 digit random string and assign to the randomString4 variable
String randomString4 = RandomStringUtils.random(6, true, true)
//define the properties step and write the randomString4 value to the Properties step
def propertiesStep4 = context.testCase.testSteps["Properties"]
propertiesStep4.setPropertyValue("randomString4", randomString4)
//generate a 6 digit random string and assign to the randomString5 variable
String randomString5 = RandomStringUtils.random(6, true, true)
//define the properties step and write the randomString5 value to the Properties step
def propertiesStep5 = context.testCase.testSteps["Properties"]
propertiesStep5.setPropertyValue("randomString5", randomString5)
//generate a 6 digit random string and assign to the randomString6 variable
String randomString6 = RandomStringUtils.random(6, true, true)
//define the properties step and write the randomString6 value to the Properties step
def propertiesStep6 = context.testCase.testSteps["Properties"]
propertiesStep6.setPropertyValue("randomString6", randomString6)
//normally I give credit in any code I produce to whoever I ripped it off from - however - this is all my own, so I have to take the blame myself this time!
So each one of I think 6 name value pairs in your JSON PAYLOAD should source the values from the Properties step - so in your payload you should look something like this
"Attribute1": "${Properties#randomString1}",
"Attribute2": "${Properties#randomString2}",
"Attribute3": "${Properties#randomString3}",
"Attribute4": "${Properties#randomString4}",
"Attribute5": "${Properties#randomString5}",
"Attribute6": "${Properties#randomString6}",
So when you now execute the test - your 6 attributes in your payload will be populated by those 6 random string values sourced from the Properties step.
So - as you can see - there's nothing elegant in the code, not iterating the same code or anything. The groovy bods will probably be able to do the above in 4 lines of code - but that's them!
if you dont like the above solution (and I can understand if you dont! :)) - perhaps ChrisAdams will sort you out!
Cheers,
Rich