Karate 如何基于静态数据迭代示例部分中的每一行
要求: 我想根据输入Json中的字段(ProductType)迭代示例部分中的每一行 ProductType的值可以是11、22或33。但这些的预期数量应该是相同的。 我在下面给出一个片段-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
**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将产品类型保存在一个文件中,如此答案所示:。这样,示例部分中只有一行。稍后,如果要添加产品类型,只需将其添加到文件中,它将反映在所有场景中。