Forum Discussion

Sriraj's avatar
Sriraj
Contributor
7 years ago

Dynamic Assertion : Resolving Property in Assertion for JSON Path

Hi , 

 

I have a JSON path evaluation in one of the assertions where the path is created dynamically based on a value from the response field , Example below .

 

[?(@.Some_Id_c=='${#EmployeeId}')].Order_Status_Id__c

 

The above path has been configured in the JSON path expression match Assertion where the expected value at the node is = Received.

 

The value for the property EmployeeId is captured in one of the steps before running the above assertion .

 

 

What i see that when the assertion is resolved , the value for Employee ID is not considered and thus the assertion fails.

 

 

Can someone help me with this ? 

5 Replies

  • nmrao's avatar
    nmrao
    Champion Level 3
    May be if you can show the json and what do you need to assert, that would be helpful.
    • Sriraj's avatar
      Sriraj
      Contributor

      nmrao thanks for the note. 

       

      Consider the JSON snippet Below.

       

      "Name": "ABC",
      "Item_Id": "<EmployeeId>",
      "Status_Id": "Received",
      "Points": 5,

      An assertion with the below path will yield value as "Received"

       

      [?(@.Item_Id=='${#prop_EmployeeId}')].Status_Id.

       

       

      However in my case the value which goes in the property <prop_EmployeeId> is captured from a response and this is got at run time .

       

       

      I want to use this property prop_EmployeeId which is filled at run time and place it in the JSON path in the assertion so that i can validate the value "Received".

       

      Please let me now if you need more information

      • HKosova's avatar
        HKosova
        SmartBear Alumni (Retired)

        You need to prefix the property name with the corresponding scope, such as ${#Project#EmployeeId} if it's a project property  or ${#TestCase#EmployeeId} if it's a test case property.