Contributions
How to get size of a list
Hi All, I am new to groovy scripts. I have a JSON response as mentioned below. From here i want to extract the count of say values in "colour"(this value will differ in every iteration). So basically i want to check the size of each category. This is the script that i wrote but it doesnt work jsonResponseMessage1 = testRunner.testCase.testSteps["preferenceCategory-IncludeOptions"].testRequest.response.contentAsString def rootNode = new JsonSlurper().parseText jsonResponseMessage1 def expectedsize=rootNode._embedded.categories.options.size() I am expecting a value like 22 for allergen, 4 for colour, etc { "_embedded" : { "categories" : [ { "name" : "Allergen", "value" : "Allergen", "options" : [ { "name" : "Antibiotic allergy", "value" : "Antibiotic allergy" }, { "name" : "Antihypertensive allergy", "value" : "Antihypertensive allergy" }, { "name" : "Aspirin allergy", "value" : "Aspirin allergy" }, { "name" : "Corn", "value" : "Corn" }, { "name" : "Egg", "value" : "Egg" }, { "name" : "Eggs", "value" : "Eggs" }, { "name" : "Fish", "value" : "Fish" }, { "name" : "Gluten", "value" : "Gluten" }, { "name" : "Ibuprofen allergy", "value" : "Ibuprofen allergy" }, { "name" : "Insulin allergy", "value" : "Insulin allergy" }, { "name" : "Kosher", "value" : "Kosher" }, { "name" : "Milk", "value" : "Milk" }, { "name" : "Nonsteroidal allergy", "value" : "Nonsteroidal allergy" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Peanut", "value" : "Peanut" }, { "name" : "Penicillin allergy", "value" : "Penicillin allergy" }, { "name" : "ShellFish", "value" : "ShellFish" }, { "name" : "Soy", "value" : "Soy" }, { "name" : "Tree Nut", "value" : "Tree Nut" }, { "name" : "Tree Nuts", "value" : "Tree Nuts" }, { "name" : "Vegan", "value" : "Vegan" }, { "name" : "Vegetarian", "value" : "Vegetarian" }, { "name" : "Wheat", "value" : "Wheat" } ] }, { "name" : "Colour", "value" : "Colour", "options" : [ { "name" : "Blue", "value" : "Blue" }, { "name" : "Green", "value" : "Green" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Red", "value" : "Red" } ] }, { "name" : "Drinks", "value" : "Drinks", "options" : [ { "name" : "Absinthe", "value" : "Absinthe" }, { "name" : "Apple", "value" : "Apple" }, { "name" : "Ballantines", "value" : "Ballantines" }, { "name" : "Bud light", "value" : "Bud light" }, { "name" : "Carlsberg", "value" : "Carlsberg" }, { "name" : "Chardonnay", "value" : "Chardonnay" }, { "name" : "Corona", "value" : "Corona" }, { "name" : "Gin & Tonic", "value" : "Gin & Tonic" }, { "name" : "Glenfiddich", "value" : "Glenfiddich" }, { "name" : "Heineken", "value" : "Heineken" }, { "name" : "Johnnie Walker", "value" : "Johnnie Walker" }, { "name" : "Lemon Drop Martini", "value" : "Lemon Drop Martini" }, { "name" : "McCallan", "value" : "McCallan" }, { "name" : "Miller", "value" : "Miller" }, { "name" : "Mint Julep", "value" : "Mint Julep" }, { "name" : "Mixed Fruit", "value" : "Mixed Fruit" }, { "name" : "Mojito", "value" : "Mojito" }, { "name" : "Old Fashioned", "value" : "Old Fashioned" }, { "name" : "Orange", "value" : "Orange" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Red Wine", "value" : "Red Wine" }, { "name" : "Strawberry Daiquiri", "value" : "Strawberry Daiquiri" }, { "name" : "Tequila", "value" : "Tequila" }, { "name" : "White Wine", "value" : "White Wine" } ] }, { "name" : "Food", "value" : "Food", "options" : [ { "name" : "Caviar", "value" : "Caviar" }, { "name" : "Chim Chum", "value" : "Chim Chum" }, { "name" : "Chowmein", "value" : "Chowmein" }, { "name" : "Fajitas", "value" : "Fajitas" }, { "name" : "Garlic Prawn Risotto", "value" : "Garlic Prawn Risotto" }, { "name" : "Indian Cury", "value" : "Indian Cury" }, { "name" : "Noodle Soup", "value" : "Noodle Soup" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Pasta", "value" : "Pasta" }, { "name" : "Pizza", "value" : "Pizza" }, { "name" : "Seafood", "value" : "Seafood" }, { "name" : "Suki", "value" : "Suki" }, { "name" : "Tortillas", "value" : "Tortillas" }, { "name" : "Vegetable Au Gratin", "value" : "Vegetable Au Gratin" }, { "name" : "Yam Chin Kai", "value" : "Yam Chin Kai" } ] }, { "name" : "Leisure", "value" : "Leisure", "options" : [ { "name" : "Cinema", "value" : "Cinema" }, { "name" : "Cosplay", "value" : "Cosplay" }, { "name" : "Exercise", "value" : "Exercise" }, { "name" : "Fishing", "value" : "Fishing" }, { "name" : "Luxury Vacation Style", "value" : "Luxury Vacation Style" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Reading", "value" : "Reading" }, { "name" : "Story Telling", "value" : "Story Telling" } ] }, { "name" : "Music", "value" : "Music", "options" : [ { "name" : "Blues", "value" : "Blues" }, { "name" : "Classic Rock", "value" : "Classic Rock" }, { "name" : "Jazz", "value" : "Jazz" }, { "name" : "Opera", "value" : "Opera" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Pop", "value" : "Pop" }, { "name" : "Rock", "value" : "Rock" } ] }, { "name" : "Spa", "value" : "Spa", "options" : [ { "name" : "Ayurvedic Spa", "value" : "Ayurvedic Spa" }, { "name" : "Cruise Ship Spa", "value" : "Cruise Ship Spa" }, { "name" : "Hot Tub", "value" : "Hot Tub" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" } ] }, { "name" : "Sports", "value" : "Sports", "options" : [ { "name" : "Air Hockey", "value" : "Air Hockey" }, { "name" : "Baseball", "value" : "Baseball" }, { "name" : "BasketBall", "value" : "BasketBall" }, { "name" : "Carrom", "value" : "Carrom" }, { "name" : "Chess", "value" : "Chess" }, { "name" : "Football", "value" : "Football" }, { "name" : "Golf", "value" : "Golf" }, { "name" : "Ice Polo", "value" : "Ice Polo" }, { "name" : "Jet Skiing", "value" : "Jet Skiing" }, { "name" : "Others(Specify)", "value" : "Others(Specify)" }, { "name" : "Para-Sailing", "value" : "Para-Sailing" }, { "name" : "Rock", "value" : "Rock" }, { "name" : "Scuba-Diving", "value" : "Scuba-Diving" }, { "name" : "Skurfing", "value" : "Skurfing" }, { "name" : "Table Tennis", "value" : "Table Tennis" }, { "name" : "VolleyBall", "value" : "VolleyBall" } ] } ] } }6 years agoPlace ReadyAPI QuestionsReadyAPI Questions1.3KViews0likes3CommentsSaving a DataGen input in each iteration and using the same to compare at the end with a response
Hi All, I have a test case where i need to store values generated by DataGen eg :- Value1 and Value2. In each iteration my script should should store values for Value1(iteration1), Value2(Iteration1), Value1(iteration2),Value2(Iteration2). I dont want to save it externally. Now when the loop ends i want to use all the values generated and compare it with one of my responses. Can you please help me with it6 years agoPlace ReadyAPI QuestionsReadyAPI Questions741Views0likes1CommentRe: How to run a loop dynamically using values received in a response in SOAP UI Pro
Hi Lucian, Thanks for the prompt response :) . I tried with script you gave, currently it is not going into while loop. Not sure what the issue is. If you can please help me on that. the result and modified script is as below def referenceIds = [] // Get raw response rawResponse = testRunner.testCase.testSteps["findReferenceforTypes-Delete Operation"].testRequest.response.contentAsString log.info rawResponse //first log response // Find all reference ids in the GetReferenceIds test step while ( rawResponse.indexOf( "referenceID\" : ") != -1 ){ rawResponse = rawResponse.substring( rawResponse.indexOf( "referenceID\" : \"") + "referenceID\" : \"".length() ) referenceIds.add( rawResponse.substring( 0, rawResponse.indexOf( "\"" ) ) ) rawResponse = rawResponse.substring( "referenceID\" : \"".length() ) log.info referenceIds //check for referenceIds } // Get the current iteration def currentIteration = testRunner.testCase.testSteps["DataSource3"].currentRow // Iterate for each element in the referenceIds list if (currentIteration < referenceIds.size) { result["ReferenceId"] = referenceIds[currentIteration] } Result Thu Apr 12 15:00:24 IST 2018:INFO:[{"referenceID":"e4e1c0ab62b850860162b9265c12005b","nativeSourceIDValue":"NativeSourceID762","masterID":"f126a218-38ef-4e76-bc68-470cc7d0c117","referenceTypeID":"e4e1c0ab62b850860162b9265bbe005a","targetReferenceTypeID":null},{"referenceID":"e4e1c0ab62b850860162b9265c68005c","nativeSourceIDValue":"NativeSourceID861","masterID":"7e8b57bb-4d8e-4039-9a7f-22bbb84990e0","referenceTypeID":"e4e1c0ab62b850860162b9265bbe005a","targetReferenceTypeID":null}] Thu Apr 12 15:00:24 IST 2018:INFO:[:]Solved7 years agoPlace ReadyAPI QuestionsReadyAPI Questions2.8KViews0likes6CommentsRe: Re: How to run a loop dynamically using values received in a response in SOAP UI Pro
Hi Lucian, [ { "referenceID" : "e4e2802c62a8fc820162b3401d7f0087", "nativeSourceIDValue" : "NativeSourceID165", "masterID" : "6b441ad3-b726-40a0-a034-dea6e57b07a8", "referenceTypeID" : "e4e2802c62a8fc820162b33ff7ed0086", "targetReferenceTypeID" : null }, { "referenceID" : "e4e2802c62a8fc820162b3404f1f0088", "nativeSourceIDValue" : "NativeSourceID690", "masterID" : "ad2361b4-4b43-4b18-ab6e-0b67acc32897", "referenceTypeID" : "e4e2802c62a8fc820162b33ff7ed0086", "targetReferenceTypeID" : null } ] Above is the response i am getting. Now i want a create a datasource step after this response with groovy script. I want that datasource to give mereferenceID[0],referenceID[1], etc for each iteration so i can use it in next request. And also thegroovy script should run iteration dynamically for the number ofreferenceID's received. Currently the script i have has issues and returns only one value with an error.Below is the script and error Error - org.codehaus.groovy.runtime.GStringImpl cannot be cast to java.lang.String Script :- jsonResponseMessage = testRunner.testCase.testSteps["abc"].testRequest.response.contentAsString def i = 0, ReferenceID, j = 0 def sActualArray= new ArrayList<String>() def jsonSlurper = new JsonSlurper().parseText jsonResponseMessage def actualsize = jsonSlurper.size() actualsize.times{ if(jsonSlurper.referenceID[i]!=null)ReferenceID=jsonSlurper.referenceID[i] else ReferenceID='' sActualArray[i]="$ReferenceID" i++ } actualsize.times{ result["ReferenceID"] = sActualArray[0]; j ++ }7 years agoPlace ReadyAPI QuestionsReadyAPI Questions2.8KViews0likes0CommentsRe: Re: How to run a loop dynamically using values received in a response in SOAP UI Pro
I have a test case where i have to extract particular ids from a response. The response has for eg. 4 ids ID1, ID2, ID3 & ID4 Now i want to use groovy script and extract all 4 ids save it somewhere(not in excel or any external file). My script should also run a loop for 4(since it has 4 ids in response) iteration for a GET service and in each iteration i want to use a different ID (ID1, ID2, ID3 & ID4). Please help me on this issue7 years agoPlace ReadyAPI QuestionsReadyAPI Questions2.9KViews0likes4Comments