Forum Discussion

harshabongle's avatar
Occasional Contributor
4 years ago

how to write a script to extract field values from response in the form of a comma separated string?

In the script assertion, I am trying to build a comma-separated string of Ids( "129,169,152") so that I can compare it with the data source    Sample Response: { "result": { "formula" : [ { "I...
  • richie's avatar
    4 years ago

    Hey harshabongle 


    I'm not picking holes here but can you clarify your description?  reason I ask is that the title of the post leads me one way of doing it, but the description leads me another.  The title of the description says you want to extract attribute values from a response in a comma separated string, but the post body states you say you want to map back the content of the Id attributes in response to the datasource.


    whats the endpoint you're after - is it just to assert the content of the response against specific values? OR - do you need the values specifically in a comma separated string for some reason?


    Also - whats your datasource(s)?  one file? csv? excel? xml? multiple files?  etc.



    if you have hardcoded values and you know them - you could add a Script Assertion like the following:


    (oh the sample response you provided wasn't wellformed json - and the following script assertion uses jsonpath - so I had to alter the structure slightly to get it wellformed - if I've guessed incorrectly you might have to alter the jsonpath a bit)


    def json = new groovy.json.JsonSlurper().parseText(context.response)
    def valList = [129,169,152]
    assert json.result.formula.Id.every{it in valList}
    //where jsonpath to Id attribute is x.result.formula[n].Id
    //e.g. Response data as follows:
    // {"result": { "formula": [{"Id": 129,"formulaName": "MO172-00-001"},
    //			{"Id": 169,"formulaName": "MO172-50-014"},
    //			{"Id": 152,"formulaName": "MO1212-50-024"}]}}


    if you dont want hardcoded values in your assertion you could parameterise the script so it sources the comma separated values in the array from the datasource.


    OR - if you still want the values in a string - you could extract the response id values to a Properties step and then a tiny bit of groovy will concatenate them into a comma separated string?


    nice one,