空手道 - 能够对 csv 文件中的特定数据集执行测试

Karate - Ability to execute tests on a specific set of data in a csv file

我在一个团队中,展示空手道作为我们 API 测试的首选框架的优势。但是,我遇到了几个关于数据驱动测试的问题。

我已经完成了 documentation, csv files 并且找不到这个问题的解决方案:

  1. 空手道是否能够对 csv 文件中给出的特定数据集(例如,基于优先级 p0、p1)执行测试?

示例“test.csv”:

|priority|data1|
| p0     |  1  |  
| p0     |  2  |
| p1     |  4  |
| p1     |  6  |

我想 运行 我的测试用例具有 csv 文件(p0 或 p1,或两者)中的特定数据集。空手道能做到吗?

我有多种方法可以做到这一点,这里是一个:

Background:
* def data = read('test.csv')
* def selected = 'p1'
* def fun = function(x){ return x.priority == selected }
* def filtered = karate.filter(data, fun)

Scenario Outline:
* print __row

Examples:
| filtered |

你不需要强迫自己进入Scenario Outline,你可以遍历数据并忽略你不想做任何处理的行。

更多想法请参考这个答案:

请注意,如果需要,您可以“回退”到 Java 以获得高级逻辑:https://github.com/intuit/karate#calling-java

您可以在此处使用的另一个有用的 karate 功能是标记示例数据的不同部分,并且 运行 根据您的需要使用一个或多个标记来标记场景。参考:https://intuit.github.io/karate/#tags-and-examples

因此您可以将示例数据编写为(一个场景可以有多个“示例:”部分,默认情况下,一个场景将 运行 所有“示例:”,除非在执行过程中指定了标签场景:

@priority=p0
Examples:
  |data1|
  |  1  |  
  |  2  |

@priority=p1
Examples:
  |data1|
  |  4  |
  |  6  |

现在您可以 运行 您的场景同时使用 p0 和 p1 标签,它将通过 data1 : 1, 2, 4, 6。或者 运行 只有一个标签 - 而且它将 运行 具有该标签数据的场景。