Karate 如何基于静态数据迭代示例部分中的每一行

Karate 如何基于静态数据迭代示例部分中的每一行,karate,Karate,要求: 我想根据输入Json中的字段(ProductType)迭代示例部分中的每一行 ProductType的值可以是11、22或33。但这些的预期数量应该是相同的。 我在下面给出一个片段- **Feature:** To check expected results for different values of ProductType Background: * url http://localhost:8080 * header Content-Type = 'ap

要求: 我想根据输入Json中的字段(ProductType)迭代示例部分中的每一行

ProductType的值可以是11、22或33。但这些的预期数量应该是相同的。 我在下面给出一个片段-

**Feature:** To check expected results for different values of ProductType

  Background: 
    * url http://localhost:8080
    * header Content-Type = 'application/json'

  Scenario Outline: To check expected results for different values of ProductType
    Given path PATH
    And request <data>
    When method POST
    Then status 200
    And match $.Parent[0].Amount ==  expectedAmount>
Examples: 
  | data                                                 | ExpectedAmount |
  | read('classpath:' + INPUT_JSON_PATH + '/Test1.json') |        1234.56 |
  | read('classpath:' + INPUT_JSON_PATH + '/Test2.json') |        6789.12 |
  | read('classpath:' + INPUT_JSON_PATH + '/Test3.json') |        3453.56 |
你能为它提出一个解决方案吗

谢谢,
Abhi

示例:行不支持任何变量求值,例如
read('classpath:'+INPUT\u JSON\u PATH+'/Test1.JSON')
,因此请改为:

* def data = read('classpath:' + INPUT_JSON_PATH + '/' + file)

Examples: 
  | file       | ExpectedAmount |
  | Test1.json |        1234.56 |
  | Test2.json |        6789.12 |
  | Test3.json |        3453.56 |

我没有阅读你问题的其余部分,因为我仍然不理解。

示例:行不支持任何变量求值,例如
read('classpath:'+INPUT\u JSON\u PATH+'/Test1.JSON')
,因此请改为:

* def data = read('classpath:' + INPUT_JSON_PATH + '/' + file)

Examples: 
  | file       | ExpectedAmount |
  | Test1.json |        1234.56 |
  | Test2.json |        6789.12 |
  | Test3.json |        3453.56 |

我没有阅读你问题的其余部分,因为我仍然不明白。

@PeterThomas:我编辑了这个问题以使其简单化。“现在有意义了吗?”彼得·托马斯:我对这个问题进行了编辑,使之变得简单。现在有意义了吗?嗨,彼得。示例行对变量的求值非常适合我,效果很好。但无论如何,让我们来学习你提到的示例部分。在这里,如果我想根据productType的不同值(输入Json中的一个字段)运行Test1.Json 3次,那么该怎么做呢?@AbhitanshuShukla我认为您仍然在考虑每个场景/场景大纲一个请求。一个场景/场景可以有多个请求和验证(给定+何时+然后组合)。示例代码:@AbhitanshuShukla您可以在同一场景大纲中逐个验证Test1、Test2和Test3。在这样的设置中,对于3种产品类型,示例中只需要3行。由于您声明产品类型是一个静态计数,因此您可以将值保存在JSON数组中(在功能文件中直接定义或从JSON文件读取),只需在示例部分输入变量,如下例所示:@AbhitanshuShukla实现这一点的最简单方法是拆分为Test1,Test2和Test3验证分为三个单独的场景大纲。@AbhitanshuShukla将产品类型保存在一个文件中,如此答案所示:。这样,示例部分中只有一行。稍后,如果您想添加产品类型,只需将其添加到文件中,它将反映在所有场景中。嗨,Peter。示例行对变量的求值非常适合我,效果很好。但无论如何,让我们来学习你提到的示例部分。在这里,如果我想根据productType的不同值(输入Json中的一个字段)运行Test1.Json 3次,那么该怎么做呢?@AbhitanshuShukla我认为您仍然在考虑每个场景/场景大纲一个请求。一个场景/场景可以有多个请求和验证(给定+何时+然后组合)。示例代码:@AbhitanshuShukla您可以在同一场景大纲中逐个验证Test1、Test2和Test3。在这样的设置中,对于3种产品类型,示例中只需要3行。由于您声明产品类型是一个静态计数,因此您可以将值保存在JSON数组中(在功能文件中直接定义或从JSON文件读取),只需在示例部分输入变量,如下例所示:@AbhitanshuShukla实现这一点的最简单方法是拆分为Test1,Test2和Test3验证分为三个单独的场景大纲。@AbhitanshuShukla将产品类型保存在一个文件中,如此答案所示:。这样,示例部分中只有一行。稍后,如果要添加产品类型,只需将其添加到文件中,它将反映在所有场景中。