Ask a Question

How to 'GetData' from an xsd:string

SOLVED
CByler
Contributor

How to 'GetData' from an xsd:string

I am perplexed. I have a test case that generates a new and unique UserAPIKey for each iteration. I then have a test case following where I need to get that unique guid (as shown below) and pass it to a delete method to remove it. However, I can't for the life of me figure out how to grab just that guid and use it in the next test case. Can anyone offer advice? I am using ReadyAPI 3.5.0 with a Soap Web Service. Many thanks!

 

<NewDataSet>
<UserAPIKey>
<UserID>37</UserID>
<UserName>cbyler</UserName>
<FullName>Cherice Byler</FullName>
<UserAPIKey>68c4570c-b184-4865-871d-45ec083f9511</UserAPIKey>
</UserAPIKey>
</NewDataSet>

11 REPLIES 11
nmrao
Champion Level 2

1. You can use XmlSlurper to parse the xml and retrieve the data required. Use below documentation for the same.
https://groovy-lang.org/processing-xml.html
2. Once extracted, set the value at test suite level so that it can accessed in any of the tests using property expansion.
https://www.soapui.org/docs/scripting-and-properties/property-expansion/


Regards,
Rao.

I appreciate the response. I will give it a shot first thing Monday. Thanks! 

racharla
New Contributor

When you right click on the field  where you want to replace the data, are you not seeing the Get Data dialog pop up? 

Sure. But when I get data the entire xml response is contained within the xsd:string and there's no way for me to just parse the guid out to use in the next test case.

troyyerJP
Occasional Contributor

I have done this in 2 ways

1) Using a combo of Property transfer Step and Properties Step (you dont need the Properties step as you could create Custom Properties at Project/Test Suite/Test Case levels) 

with a licensed ReadyAPI you can follow the steps provided here to do what you are after 

https://www.soapui.org/docs/functional-testing/properties/transferring-properties/ 

I do this to capture the SessionsId and Url after the Login Request Step.

 

2) transfer from a 'Groovy Script Test Step'/'Groovy Assertion' in the Request Step

something like this could work for you

 

 

 

/* Sample XML supplied. 
<NewDataSet>
<UserAPIKey>
<UserID>37</UserID>
<UserName>cbyler</UserName>
<FullName>Cherice Byler</FullName>
<UserAPIKey>68c4570c-b184-4865-871d-45ec083f9511</UserAPIKey>
</UserAPIKey>
</NewDataSet>
*/

//pull the request data into the groovy Assertion step (Assuming that the xml is from the current request step)
def Xmlnodes = new XmlParser().parseText(messageExchange.responseContentAsXml)
def ActualUserAPIKey = Xmlnodes.'**'.'UserAPIKey'.'UserAPIKey'.text()
/*
 note that you have 2 nodes for UserAPIKey.
first higher node Xmlnodes.'**'.'UserAPIKey'.text(), will get you:
37cbylerCherice Byler68c4570c-b184-4865-871d-45ec083f951168c4570c-b184-4865-871d-45ec083f9511
second inner node Xmlnodes.'**'.'UserAPIKey'.'UserAPIKey'.text() will get you: 68c4570c-b184-4865-871d-45ec083f9511
*/
//save value to a property to be called by other Test Steps
context.testCase.testSuite.setPropertyValue("RequestUserAPIKey", ActualUserAPIKey)

 

 

Awesome, thank you for the details troyyerJP!

troyyerJP, I tried using the Property Transfer as outlined in the first solution. I am at least able to get the data transfered to the next test step in the UserAPIKey* field, however, it's giving me the entire "AddUserAPIKeyResult" in the field and I don't have a way to just pass the guid value rather than the whole xml value (see screenshot). I then tried you second solution but failed spectacularly as it was outside my wheel house and I'm not quite that advanced with ReadyAPI.  Is there a way for me to just get that guid value?

troyyerJP
Occasional Contributor

Have you selected the right xml field from the field selector in the property transfer step?

troyyerJP_0-1616467773082.png

 


I've created a gif of what you could do with the property transfer stepHelp With GetData.gif

 

So, I tried to do it like you did it, however, in the Property Transfer, I don't see what you see. When I select the test step for the Property Transfer, then select the test step for AddUserAPIKey from the Source drop-menu, I don't have the selection of SampleXML in the Property drop-menu. See screenshots.  Thank you so much for helping me with this!

cancel
Showing results for 
Search instead for 
Did you mean: