Groovy for assertion not contain and json path
SOLVED- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Groovy for assertion not contain and json path
Hi folks
is it possible to assert not contains and json path using groovy script?
i know in the test step soapUI can add assertion via UI for contain, not contain, json path, etc.
how to do this assertion for not contain and json path in the test step assertion - script assertion?
many thank
Solved! Go to Solution.
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Yes, consider the example:
import static com.jayway.jsonpath.JsonPath.parse def json = '''{"quote": { "id": "test_id", "amount": 100, "links": [ { "rel": "self", "href": "http://localhost:8080/quote/777" }, { "rel": "customer", "href": "http://localhost:8080/customer/12345" } ] }} }''' def quoteId = parse(json).read('$.quote.id') log.info quoteId assert quoteId=="test_id" assert quoteId.contains('test_id') assert !quoteId.contains('testid') //not contains
In the case of a script Assertion, simply replace the json string with the script assertion's property
messageExchange.response.contentAsString
Is this what you wanted?
Cheers,
Rupert
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
hello Rupert,
many thanks for the sample script, it works.
for the ! operator, is this groovy operator or soapUI operator?
@rupert_anderson wrote:Hi,
Yes, consider the example:
import static com.jayway.jsonpath.JsonPath.parse def json = '''{"quote": { "id": "test_id", "amount": 100, "links": [ { "rel": "self", "href": "http://localhost:8080/quote/777" }, { "rel": "customer", "href": "http://localhost:8080/customer/12345" } ] }} }''' def quoteId = parse(json).read('$.quote.id') log.info quoteId assert quoteId=="test_id" assert quoteId.contains('test_id') assert !quoteId.contains('testid') //not containsIn the case of a script Assertion, simply replace the json string with the script assertion's property
messageExchange.response.contentAsStringIs this what you wanted?
Cheers,
Rupert
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
Many thanks for accepting the solution, glad it worked for you 🙂
Yes, thats the Groovy ! (not) operator - isn't that what you wanted to use?
Thanks,
Rup
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
yeah many thanks ruperts 🙂
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi ;
The code below was used to resolvean issue that I had experienced before. Now the issue is the same groovy script is not working inReadyApi groovy script but it does and still works in SOAPUI
The same code is used to replicate
import static com.jayway.jsonpath.JsonPath.parse def json = '''{"quote": { "id": "test_id", "amount": 100, "links": [ { "rel": "self", "href": "http://localhost:8080/quote/777" }, { "rel": "customer", "href": "http://localhost:8080/customer/12345" } ] }} }''' def quoteId = parse(json).read('$.quote.id') log.info quoteId
I get the above working fine in SOAPUI 5.3.0 but when I use the same script in ReadyAPI I get the following message:
java.lang.NoClassDefFoundError: Could not initialize class net.minidev.json.JSONvalue error at ## (this would be the line that contains:
parse(json).read('$.quote.id')
)
i read up another site that says it is missing the json-smart jar file but I confirmed that it is indeed in the lib installation dir of readyapi. I have even tried copying over SOAPUI's json-smart jar but it is an older version and it did not resolve my issue.
How can I resolve this? Surely this should be compatible or do I need to do something else?
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
