空手道-无法在循环中运行动态方案大纲

时间:2019-01-28 08:09:33

标签: karate

这是我的功能文件,该文件仅加载json文件,并希望在同一文件上进行迭代

 Background:
 * def kittens = read('../json/test.json')
 Scenario Outline: cat name: <name>
 * print <name>
  Examples:
  | name |
  | kittens |

这是输出

[
  {
    "name": "Bob"
  },
  {
    "name": "Wild"
  },
  {
    "name": "Nyan"
  },
  {
    "name": "Keyboard"
  },
  {
    "name": "LOL"
  },
  {
    "name": "Ceiling"
  }
]

据我了解,这应该运行7次并为我提供单独的变量值,但是它仅运行一次并给我完整的json作为输出。

让我知道我是否想念任何东西。

2 个答案:

答案 0 :(得分:1)

您正在传递带有变量name的列表/数组,它将仅运行一次,因为它将整个json数据解释为单个变量name

  

您可能已经注意到它将所有数据打印在test.json中   一次,因为它是正常情况下的轮廓。

您应该按如下所示直接传递数组,以使其成为动态方案大纲。

Feature: Dynamic Scenario Outline
 Background: 
  * def kittens = read('../json/test.json')
 Scenario Outline: cat name: <name> 
  * print <name> 
 Examples: 
  | kittens |

对于动态方案概述,如果您的json中的密钥为<name>,则变量"name"实际上将从您的json派生。不能作为Examples:中列表的标题。

空手道文档-Dynamic Scenario Outline

答案 1 :(得分:-1)

@Babu Sekaran。它没有像上面那样打印猫的名字。 它是迭代次数,但不打印任何东西。然后我使用 * print '' 表示包含引号。然后它开始打印猫的名字。

Feature: Dynamic Scenario Outline
  Background:
    * def kittens = read('test.json')

  Scenario Outline: cat name: <name>
    * print '<name>'
       Examples:
         | kittens |