如何添加多个 JSON 数组元素取决于示例数据集

How to add Multiple JSON array Element depends on Example Data Set

在我的空手道场景自动化过程中,得到了以下问题陈述。谁能帮我解决这个问题?

我的 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"
      }
    }
  ]
}

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

有很多方法可以解决这个问题,也许您不应该尝试将所有内容都强行放入 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

这给你完全一样的东西。

另请查看set的可能用法:https://github.com/intuit/karate#set-multiple