对于我的测试用例,我需要从json文件和另一个功能文件(后者又包含数据库连接并从数据库返回数据)中注入数据。如果在json文件中提到数据为“ null”,则代码应调用 DB.feature 文件并返回数据。如果这些是填充在json文件中的数据,则代码应对此进行选择,并忽略 DB.feature 调用。
为此,这是我正在从中获取数据的示例 Test.json 文件。
{
"data": [
{"service": null}
]
}
这是具有条件的示例代码;
* json data = call read ('classpath:PP1/data/Test.json')
* def service = data.data[0].service
* def data = service == null ? 'ABC' : karate.callSingle('classpath:PP/Features/Service.feature')
* def Svc = data.response.serviceResponse.service
* print Svc
现在,如果服务在json文件中为不为空,则此方法有效。如果 service为null,则运行失败,因为它找不到data.response.serviceResponse.service
(这是我的数据位于 Service.feature 文件的响应中的位置)>
我不知道该如何实现。有人可以建议吗?
答案 0 :(得分:2)
我假设您的运行失败,因为在{strong> null 和 not null 情况下,data
变量中的数据将不同。
* def Svc = data.response.serviceResponse.service
因此,如果您的条件不为空,则上述步骤将导致失败。
根据您的问题和一些假设,此处可能是经过修改的代码,可能会起作用,
* json data = call read ('classpath:PP1/data/Test.json')
* def service = data.data[0].service
* def service = (service == null) ? karate.callSingle('classpath:PP/Features/Service.feature').response.serviceResponse.service : service