cancel
Showing results for 
Search instead for 
Did you mean: 

Trying to retrieve a property based on the value of another property in the Properties test step

Highlighted
Contributor

Trying to retrieve a property based on the value of another property in the Properties test step

I have 2 Properties test steps set up in one of my test suites.  And right now I need to retrieve values from the 2nd Properties test step based on a serial number from the first Properties test step.

 

So, in my groovy script, I am processing through the information from the first Properties step which is something like : 

Row 1 : 1

Serial Number 1 : 12345

Time 1 : <timestamp 1>

Row 2 : 2

Serial Number 2 : 12346

Time 2 : <timestamp 2>

Row 3 : 3

Serial Number 3 : 12345

Time 3 : <timestamp 3>

whereas in Property Step 2 it looks like :

Row 1 : 1

Serial Number 1 : 12345

Count 1 : 0

Row 2 : 2 

Serial Number 2 : 12346

Count 2 : 0

Row 3 : 3

Serial Number 3 : 12347

Count 3 : 0

 

Now, I need to update the Count value of Properties step 2 whenever I encounter the serial number in Properties step 1.  Is there any way to do that without it getting messy..??  Also, the properties, when loaded, are sorted based on other fields, not based on the serial numbers.

4 REPLIES 4
Highlighted
Community Leader

Re: Trying to retrieve a property based on the value of another property in the Properties test step

@hazel_chua :

 

Hope below code will help you out in resolving your issue:

 

//For getting count from Properties step 1
def propertiesStep = testRunner.testCase.getTestStepByName("Properties")
HashMap<String,Integer> map = new HashMap<String,Integer>();
for(testProperty in propertiesStep.getPropertyList()){
	if(testProperty.name.contains("Serial")){
		if(map.containsKey(testProperty.getValue()) )
			map.put(testProperty.getValue(), map.get(testProperty.getValue())+1)
		else{
			map.put(testProperty.getValue(), 1)
		}
	}
}
//For setting count in Properties step 2
def propertiesStep1 = testRunner.testCase.getTestStepByName("Properties1")
for(testProperty in propertiesStep1.getPropertyList()){
	
	for(Map.Entry entry in map.entrySet()){
		if(entry.getKey() in testProperty.value){
			flag = testProperty.name.substring(testProperty.name.length()-1);
			propertiesStep1.setPropertyValue("Count "+flag.toString(),entry.getValue().toString())
		}
	}
}

Click "Accept as Solution" if my answer has helped,
Remember to give "Kudos" 🙂 ↓↓↓↓↓



Thanks and Regards,
Himanshu Tayal
Highlighted
Contributor

Re: Trying to retrieve a property based on the value of another property in the Properties test step

That isn't quite what I was after but it gives me something to try out.  Will update this when I get the chance to think through that and perhaps adapt the code to better suit what I need.

 

Thanks

Highlighted
Community Leader

Re: Trying to retrieve a property based on the value of another property in the Properties test step

@hazel_chua : What's your use case then could you please brief where have you stuck


Click "Accept as Solution" if my answer has helped,
Remember to give "Kudos" 🙂 ↓↓↓↓↓



Thanks and Regards,
Himanshu Tayal
Highlighted
Contributor

Re: Trying to retrieve a property based on the value of another property in the Properties test step

Apologies @HimanshuTayal, been busy with other parts of work to get back to this.  What I am trying to do here is that while the script iterates through the properties of PropertyStep1, it updates the matching 'Count' property of the 'Serial Number' in PropertyStep2 with the new value based on the Serial Number that is encountered in PropertyStep1

 

Edit again : I just thought of another interesting quandary.  What if the 'Count' property was added to PropertyStep2 after the property step was created, so that now PropertyStep2 looks like (as an example) :

Row 1 : 1

Serial Number 1 : 12345

Row 2 : 2

Serial Number 2 : 12346

Row 3 : 3

Serial Number 3 : 12347

Count 1 : 0

Count 2 : 0

Count 3 : 0

New Here?
Join us and watch the welcome video:
Top Kudoed Authors