如何在空手道中存储使用 callSingle 创建的实体 ID?

How to store entity IDs created with callSingle in karate?

我正在 运行 使用 Karate 框架进行测试。 作为设置步骤,我需要使用 REST API 创建一些实体。我在空手道中使用 callSIngle 创建它们-config.js:

    const result = karate.callSingle('classpath:path/to/createEntities.feature', config)

该功能有一个 Scenario Outline,定义了需要创建的各种实体。 REST API returns 创建的每个实体的 ID。

如何保存这些 ID?我尝试了几种解决方案,例如在 Scenario OutlineBackground 部分定义一个变量 - 不起作用,因为它被每个测试覆盖并且只返回它的最后一个值。

Background
    * def ids = {}
.....
Scenario Outline:
....
    * set ids.<index> = response.id

在此示例中,resultids 映射中只有一个值,对于最后一种情况。

是的,Scenario Outline 不是为了能够累积结果而设计的。您也许可以附加到 JSON 数组,但我将其留给您进行试验。

如果你喜欢 Java,可能有用的一件事是,你可以将数据附加到一些单例中,参考:

否则我建议你使用table,这里的例子可能是最好的简单参考:https://github.com/karatelabs/karate#data-driven-features

因此您可以拥有一组表格数据,驱动一个循环并将结果作为一个数组,准备好 return 或做任何事情。