We are building a new experience for our SmartBear Community.
This site is now read-only. You can still browse and search as usual. Learn More
This site is now read-only. You can still browse and search as usual. Learn More
OK, got it. Well, getting test step names i pretty simple, however you will need to supply the 0-based index of where the desired step is meaning that if you want to generalize you have to put that particular step at the same index everywhere (btw, test step name is the same as the request name). Here goes:
def testStepName = context.testCase.getTestStepAt(n).getName()
where n is the 0-based index. Now you can simply use testStepName here:
def request_total = context.expand('${' + testStepName + '#response#$[n].totalCount}')
Notice that since testStepName is a variable you have to concat the strings, hence the ' and the + surrounding it.
Well, SoapUI uses Groovy so that API may be useful:
http://docs.groovy-lang.org/latest/html/gapi/
There are also the SoapUI specific libraries:
https://www.soapui.org/apidocs/index.html?overview-summary.html
Other than that I mostly google the problem and read a lot.
If I understand you correctly, this is the failing line:
def request_total = context.expand('$.totalCount')
Yes?
Well, the first error is missing {}, like this:
def request_total = context.expand('${totalCount}')
Second, is totalCount the property of a response? In other words, do you send a request and get a response that contains totalCount and a value for it? In that case the proper syntax would be
def request_total = context.expand('${"request name"#response#$[n].totalCount}')
where "request name" would be the name of the request and [n] is the node number (in brackets) in the response where the totalCount value is
What I am trying to do is avoid using the request name.
The assertion is not a groovy test step, it is a groovy assertion (script assertion) so it is happening from within the request.
I want to find a syntax that will say:
Look at the totalCount within the current request (and compare it to a value held by property).
The reason why I want to do it that way is becaue I would like to use this assertion on all my requests. This is to assure that non of my requests are returning the entire scope of results (which would tell me that something went wrong somewhere).
It is easy to clone an assertion and push it to all the requests, but if I have to then manually open each one and point it to the specific request it defeats the purpose of the assertion cloning. And is what I am trying to avoid.
OK, got it. Well, getting test step names i pretty simple, however you will need to supply the 0-based index of where the desired step is meaning that if you want to generalize you have to put that particular step at the same index everywhere (btw, test step name is the same as the request name). Here goes:
def testStepName = context.testCase.getTestStepAt(n).getName()
where n is the 0-based index. Now you can simply use testStepName here:
def request_total = context.expand('${' + testStepName + '#response#$[n].totalCount}')
Notice that since testStepName is a variable you have to concat the strings, hence the ' and the + surrounding it.
Thank you so much
Had to make a few minor changes but this is working for me, now on to clone it to 100s of requests :)
I wonder if you have a link (or suggestion for search terms to plug into google) where I can search more information about the structure of these expression and maybe gain better understanding... I didn't see much in the soapUI documentation