我想在功能文件中为ScenarioOutline动态创建多个示例。是否可以以某种方式在@before挂钩中执行此操作?

我知道这不是您应该使用的黄瓜,但是怎么可能呢?

我已经尝试在挂钩中访问Scenario,但是没有方法可以获取所有步骤及其变量/占位符

最佳答案

Cucumber不鼓励在功能文件之外使用示例。


但是,黄瓜很少有非标准方法可用于功能文件之外的示例。其中之一,您可以在grasshopper's post中进行引用。

另一种选择是使用gherkin with QAF,它提供了许多内置的data-providers功能,包括XML / CSV / JSON / EXCEL / DB。它还支持提供使用自定义数据提供程序通过代码生成的示例。例如:

Scenario Outline: scenario with dynamic test-data
....

Examples:{"dataProvider":"dynamic-examples", "dataProviderClass":"my.project.impl.CustomExamplesProvider"}



package my.project.impl;
public class CustomExamplesProvider{

    @DataProvider(name="dynamic-examples")
    public static Object[][] dataProviderForBDD(){
        //generate and return data.
        //This is just example with hard-coded values and you can generate and return data as per need.
        Map<Object, Object> ex1 = Maps.newHashMap();
        ex1.put("fruit", "grapes");
        ex1.put("color", "green");

        Map<Object, Object> ex2 = Maps.newHashMap();
        ex2.put("fruit", "banana");
        ex2.put("color", "yellow");

        return new Object[][] {{ex1},{ex2}} ;
    }
}

10-04 11:21
查看更多