How to 'GetData' from an xsd:string
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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>
Solved! Go to Solution.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I appreciate the response. I will give it a shot first thing Monday. Thanks!
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When you right click on the field where you want to replace the data, are you not seeing the Get Data dialog pop up?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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)
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Awesome, thank you for the details troyyerJP!
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Have you selected the right xml field from the field selector in the property transfer step?
I've created a gif of what you could do with the property transfer step
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
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!
