在JSON路径表达式中使用变量

时间:2019-08-29 11:03:19

标签: karate

我有一个功能文件,可以从csv文件中检索给定参数的数据。为了做到这一点,我需要在JsonPath表达式中使用一个变量来检索给定参数的数据。我尝试了可能的方法,但是在jsonPath中使用变量不起作用。我正在使用0.9.4版本

我尝试了以下方法:

 * def userId = get[0] testData[?(@.UserType=='${userType}')].UserId
     * def userId = get[0] testData[?(@.UserType==userType)].UserId
     * def userId = get[0] testData[?(@.UserType=='#(userType)')].UserId(I suppose this can only be used in json/xml)

在硬编码值以下可以正常工作:

 * def userId = get[0] testData[?(@.UserType=='SuperAdmin')].UserId

调用的功能

功能:从excel数据源提取各种类型数据的实用程序

背景:

 * def DataUtility = Java.type('com.org.utils.DataUtility')
 * def dataUtils = new DataUtility()
     * def testData = read('classpath:testdata/TestData.csv')

方案:检索给定用户类型的userId

      * def userId = get[0] testData[?(@.UserType=='${userType}')].UserId

通话功能:

 * table params
 |   userType   |
 | 'SuperAdmin' | 

     * def extractedData = call read('DataExtractor.feature') params
     * def userID = extractedData[0].userId

1 个答案:

答案 0 :(得分:-1)

我尝试在Json Path中使用变量。 示例:

String elementPath = "$.[" + i + "].item.value";

在此语句中,i是循环变量。此后,将其传递到read的{​​{1}} api。 对我来说,它工作得很好。 我正在通过jayway使用JsonPath&DocumentContext来实现此目的。

DocumentContext