占位符替换为内联(方案)变量,而不是全局(背景)变量

时间:2019-01-14 16:52:24

标签: java gherkin karate

我想使用正确设置有效载荷参数的方案大纲和示例在同一功能文件的所有方案中重用一个有效载荷。 我注意到在背景部分中定义的有效负载json并未替换其占位符变量。

(Java 9,空手道0.9.0) 为了展示我的问题,我将其归结为:

Feature: Some Test

Background: 
  * def globalVariable = {name: <name>}

Scenario Outline: Successfully register a single valid user
  * def inlineVariable = {name: <name>}
  * print "from global : ", globalVariable
  * print "from inline : ", inlineVariable

Examples: 
  | name  |
  | 'Bob' |

结果:

16:38:00.602 [main] INFO com.intuit.karate - [print] from global :  {
  "name": "<name>"
}

16:38:00.608 [main] INFO com.intuit.karate - [print] from inline :  {
  "name": "Bob"
}

有人可以向我解释一下,为什么全局json结构'globalVariable'无法替换变量吗?

1 个答案:

答案 0 :(得分:1)

因为占位符仅在Scenario Outline中起作用。我认为在Background中提供支持确实会造成混乱,因为您可以在同一Scenario中使用普通的Feature-s。

因此,请在Scenario Outline主体内部进行替换-即使这意味着您重复一两行。 IMO没什么大不了的。