Karate 支持从场景大纲传递到JSON文件

Karate 支持从场景大纲传递到JSON文件,karate,Karate,我将重用一些特性,并在场景大纲中调用多个特性。 由于所调用的功能是通用的,我们希望在其自己的参数文件中定义其参数,而参数值在占位符中定义 我们希望占位符可以从大纲示例中获得值 怎么做 Feature: verify parameter passing Scenario Outline: verify 2 calls * def result1 = call read('baseFeature1.feature') * def result2 = call read('ba

我将重用一些特性,并在场景大纲中调用多个特性。 由于所调用的功能是通用的,我们希望在其自己的参数文件中定义其参数,而参数值在占位符中定义

我们希望占位符可以从大纲示例中获得值

怎么做

Feature: verify parameter passing

  Scenario Outline: verify 2 calls
    * def result1 = call read('baseFeature1.feature')

    * def result2 = call read('baseFeature2.feature') result1

    * print result2

    Examples:
      | fooValue |
      | value1 |
      | value2 |
feature_1.json

{
  "foo": "#(fooValue)"
}
feature_2.json

{
  "foo": "fooValue",
  "bar": "#(result1.barValue)"
}

我认为目前正在开发的版本将使这成为可能。您能否看看GitHub的这个问题,看看这是否解决了您的问题:

如果您可以从源代码构建并尝试此新功能,这也将非常棒

Scenario Outline: magic variables with embedded expressions
  * def expected = __num == 0 ? { name: 'Bob', alive: false } : { name: 'Nyan', alive: true }
  * match expected == { name: '#(__row.name)', alive: '#(__row.alive)' }
  * eval karate.set(__row)
  # you can read from a re-usable JSON file instead of the line below
  * match expected == { name: '#(name)', alive: '#(alive)' }

  Examples:
    | name | alive! |
    | Bob  | false  |
    | Nyan | true   |

我们可以试用这个新功能,发布日期如何?@wenxzhen您现在可以试用0.9.3.RC1并检查。一周内将有一次RC2。如果您提供反馈,我们可以尽快发布最终版本:)它可以工作@peter thomas关于通过要求的另一个要求描述如下,是否可能?如果没有,我们需要做多少工作示例:|reqParameter1 | reqParameter2 |{“k11”:“v11”、“k12”:“v12”}{“k13”:“v13”、“k14”:“v14”}{“k21”:“v21”、“k22”:“v22”}{“k23”:“v23”、“k24”:“v24”}}}可以将reqParameters1和reqParameter2注入JSON文件,键可以称为reqParameters1.k11、ReqParameterK12.3?这样我们可以减少示例的列和冲突。@wenxzhen是的,您可以使用
reqParameter
作为列名,它将按预期工作,请参见此示例:在示例表中,我们添加!,它是有效的。以前我错误地认为!仅适用于数字和布尔值。
{
  "foo": "fooValue",
  "bar": "#(result1.barValue)"
}
Scenario Outline: magic variables with embedded expressions
  * def expected = __num == 0 ? { name: 'Bob', alive: false } : { name: 'Nyan', alive: true }
  * match expected == { name: '#(__row.name)', alive: '#(__row.alive)' }
  * eval karate.set(__row)
  # you can read from a re-usable JSON file instead of the line below
  * match expected == { name: '#(name)', alive: '#(alive)' }

  Examples:
    | name | alive! |
    | Bob  | false  |
    | Nyan | true   |