不在示例中调用其他功能并从 csv 读取数据

Calling other feature and reading data from csv not in examples

我通常在示例中调用其他功能并从 csv 读取数据,如下所示。

Scenario Outline: 
* call read('classpath:controller/Controller.feature')

Examples:
|read('classpath:com/testdata/Test.csv')|

这次我还是想从csv中读取数据,但是使用Examples做其他用途,如下图。是否仍然可以从 csv 读取数据?也许作为参数传递?

Scenario Outline: 
        * call read('classpath:controller/Controller.feature'){read('classpath:com/testdata/Test.csv')}
    
    Examples:
    |gain |spend    |
    |12000| 12008   |
    |3400 | 4655    |

我知道它是这样工作的,但我必须传递索引 [0],如果我在 csv 中有更多测试数据,它就不会工作

Scenario Outline: 
    * def testData = read('classpath:com/testdata/Test.csv')
    * call read('classpath:controller/Controller.feature'){ "name": "#(testData[0].name)", "age": "#(testData[0].age)"}

Examples:
|gain |spend    |
|12000| 12008   |
|3400 | 4655    |

我只给一个提示。当您使用 Examples 时,行索引可用作名为 __num 的变量:https://github.com/karatelabs/karate#scenario-outline-enhancements

所以你可以这样做:

Feature:

Scenario Outline:
* def data = [{ id: 0 }, { id: 1 }]
* match (data[__num].id) == temp

Examples:
| temp! |
| 0     |
| 1     |