Forum Discussion

lfales's avatar
lfales
Occasional Contributor
4 years ago

Property Transfer - Suite of test steps

Hello, I have a series of test steps which pass the response to the next. I need to take a full enriched response and remove the last '}' so I can append additional request parameters for the next test request. Is there an easy way to do this? maybe via groovy?

So I am wanting to pull in the response from OpenCalaisRequest#Response and to run the next test step, then add additional parameters. So the next test input would look something like the below, however, I need to strip or remove the final json bracket '}' in order to add the additional finchRequest parameters for it to be valid json:
"${OpenCalaisRequest#Response}",
"finchRequest": {
"finchOutput":false,
"documentSentiment": true,
"instanceSentiment": true,
"sentimentModel": "financial3",
"entities":["*"],
"salience":true,
"salienceModel":"News",
"languageCode":"en"
}
}

I assume I would have to add an assertion script to OpenCalaisRequest test step to manipulate the input for the next test step which includes finchRequest parameters? Any help is appreciated.

  • lfales 

    The code snippet, which I gave earlier, it shouldn't go into property transfer step,

    we have to insert a groovy step after your REST request call and paste that code, do necessary modifications as per your project(Ex: Name changing etc..) 

     

    Code:

    //import library to parse JSON
    import groovy.json.JsonSlurper

    def response = testRunner.testCase.getTestStepByName("OpenCalaisRequest").getPropertyValue("Response")
    def responseJSON = new JsonSlurper().parseText(response)

    //verify the slurper isn't empty
    assert!(responseJSON.isEmpty())

    testRunner.testCase.setPropertyValue("finchresponseJSON",responseJSON.toString().replaceAll("\\{", "\n"))

     

    Use "finchresponseJSON" from testcase level into your next request. it looks like ${#TestCase#finchresponseJSON}, so it passes your whole JSON response without "{  and }"

     

  • PrathapR's avatar
    PrathapR
    Frequent Contributor

    Hi lfales 

    We can achieve this by below groovy snippet, you can copy "finchresponseJSON" to your next request without "{ or }" .

     

    Code:

    //import library to parse JSON
    import groovy.json.JsonSlurper

    def response = testRunner.testCase.getTestStepByName("OpenCalaisRequest").getPropertyValue("Response")
    def responseJSON = new JsonSlurper().parseText(response)

    //verify the slurper isn't empty
    assert!(responseJSON.isEmpty())

    def finchresponseJSON =responseJSON.toString().replaceAll("\\{", "\n")

    • lfales's avatar
      lfales
      Occasional Contributor

      When I attempt to add this snipet to the property transfer for property 'text', the transferred values gives back the following:  [Use bracket notion ['my prop'] if your property contains blank characters. position: 2]. Really new to property transfers so maybe applying this incorrectly?

  • richie's avatar
    richie
    Community Hero
    krishunenni whats the purpose behind your post?

    lfales
    Why are you doing this in groovy? Are you having to vary the parameter names themselves or is there another reason? If you could expand the detail in your post a bit, this would help me understand what youre doing.

    Ta

    Rich
  • lfales :

     

    You can try below piece of code to remove last "}" from your response:

     

    str = str.substring(0, str.length() - 1);

     

    Let me know if more help is required

    • lfales's avatar
      lfales
      Occasional Contributor

      Hmm, so I tried that code on the property transfer 'text', I can see the text being transferred but doesnt appear the final '}' is getting stripped? Here is how I set it up, not sure its correct, see attached

      • PrathapR's avatar
        PrathapR
        Frequent Contributor

        lfales 

        The code snippet, which I gave earlier, it shouldn't go into property transfer step,

        we have to insert a groovy step after your REST request call and paste that code, do necessary modifications as per your project(Ex: Name changing etc..) 

         

        Code:

        //import library to parse JSON
        import groovy.json.JsonSlurper

        def response = testRunner.testCase.getTestStepByName("OpenCalaisRequest").getPropertyValue("Response")
        def responseJSON = new JsonSlurper().parseText(response)

        //verify the slurper isn't empty
        assert!(responseJSON.isEmpty())

        testRunner.testCase.setPropertyValue("finchresponseJSON",responseJSON.toString().replaceAll("\\{", "\n"))

         

        Use "finchresponseJSON" from testcase level into your next request. it looks like ${#TestCase#finchresponseJSON}, so it passes your whole JSON response without "{  and }"