我想在功能文件中为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}} ;
}
}