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

Placeholders replaced for inline (Scenario) variables, not for global (Background) ones

我想在同一功能文件的所有场景中重复使用一个有效载荷,使用正确设置有效载荷参数的场景大纲和示例。 我注意到我在背景部分定义的负载 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' 没有替换变量?

因为占位符仅在 Scenario Outline 内有效。我认为在 Background 中支持真的很混乱,因为你可以在同一个 Feature.

中使用普通的 Scenario-s

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