【问题标题】:Karate - Ability to execute tests on a specific set of data in a csv file空手道 - 能够对 csv 文件中的特定数据集执行测试
【发布时间】:2020-08-13 03:56:31
【问题描述】:

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

我已经浏览了documentationcsv files 并找不到这个问题的解决方案:

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

示例“test.csv”:

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

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

【问题讨论】:

    标签: api csv karate dataprovider


    【解决方案1】:

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

    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,你可以循环数据并忽略你不想做任何处理的行。

    有关更多想法,请参阅此答案:https://stackoverflow.com/a/61685169/143475

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

    【讨论】:

    • 谢谢!我有一个后续问题,我要等到最初的问题后 90 分钟才能发布。
    【解决方案2】:

    您可以在此处使用的另一个有用的空手道功能是标记示例数据的不同片段,并根据您的需要使用一个或多个标记运行场景。参考: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。或者仅使用一个标签运行 - 它将使用该标签的数据运行场景。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 2020-01-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多