使用If条件选择数据

时间:2019-01-05 20:37:04

标签: karate

对于我的测试用例,我需要从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 文件的响应中的位置)

我不知道该如何实现。有人可以建议吗?

1 个答案:

答案 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