首页 > 解决方案 > 如何添加多个 JSON 数组元素取决于示例数据集

问题描述

在我的空手道场景自动化中,得到了以下问题陈述。有人可以帮我吗?

我的 JSON 文件将包含,

{
  "schema_id": 25,
  "records": [
    {
      "value": {
        "NUM_CHARGE_ID": "#(numChargeID)",
        "DTE_START": "2017-05-26",
        "NUM_DAY": "#(numDay)"
      }
    }
  ]
}

从我的空手道功能文件中,我想传递来自示例的数据,并且取决于它应该在 json 中创建多个数组元素的数据集。喜欢,

Examples:
| numChargeID   | numDay|
|C10,C21,C15,C18|1,2,3,4|
{
  "schema_id": 25,
  "records": [
    {
      "value": {
        "NUM_CHARGE_ID": "C10",
        "DTE_START": "2017-05-26",
        "NUM_DAY": "1"
      },
      {
        "NUM_CHARGE_ID": "C21",
        "DTE_START": "2017-05-26",
        "NUM_DAY": "2"
      },
      {
        "NUM_CHARGE_ID": "C15",
        "DTE_START": "2017-05-26",
        "NUM_DAY": "3"
      },
      {
        "NUM_CHARGE_ID": "C18",
        "DTE_START": "2017-05-26",
        "NUM_DAY": "4"
      }
    }
  ]
}

空手道有什么办法可以处理这种情况吗?

标签: karate

解决方案


有很多方法可以解决这个问题,也许你不应该试图强迫一切进入Examples:. 例如:

* def chargeIds = ['C1', 'C2']
* def dayNums = [1, 2]
* def fun = function(x, i){ return { NUM_CHARGE_ID: x, NUM_DAY: dayNums[i] } }
* def records = karate.map(chargeIds, fun)
* print records

这给了你:

[
  {
    "NUM_CHARGE_ID": "C1",
    "NUM_DAY": 1
  },
  {
    "NUM_CHARGE_ID": "C2",
    "NUM_DAY": 2
  }
]

我推荐的是这样的:

* table records
| NUM_CHARGE_ID | NUM_DAY |
| 'C1'          | 1       |
| 'C2'          | 2       |

* print records

这给了你完全相同的东西。

还要看看可能的用途sethttps ://github.com/intuit/karate#set-multiple


推荐阅读