我想在功能文件中为ScenarioOutline动态创建多个示例。可以在@before挂钩中执行此操作吗?
我知道这不是您应该使用的黄瓜,但是怎么可能?
我已经尝试在挂钩中访问Scenario,但是没有获取所有步骤及其变量/占位符的方法
答案 0 :(得分:1)
黄瓜不鼓励在功能文件之外使用示例。
但是,黄瓜很少有非标准方法可用于功能文件之外的示例。其中之一,您可以在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}} ;
}
}
答案 1 :(得分:0)
之前已经问过几次,通常是更具体的问题“如何从CSV导入方案大纲示例?”。通过研究该问题,您可能会找到适合您的解决方法,例如建议使用this answer的QAF Gherkin scenario factory或建议将CSV传递到方案中的this answer,然后使用示例索引表。
但是,Cucumber FAQ中特别列出了从文件动态定义方案作为反模式
我们建议您不要使用Excel或csv文件定义测试用例;使用Excel或csv文件被视为反模式。
Cucumber的目标之一是拥有可执行的规范。这意味着您的功能文件应该只包含正确级别的信息,以记录系统的预期行为。如果您的测试用例保存在单独的文件中,您将如何阅读文档?
有时,当有人问这个问题时,会有strong response的人知道使用误用的BDD工具会带来的痛苦,实际上是恳求他们不要这样做。
黄瓜作为BDD工具涉及很多开销(编写功能文件)并提供一定的价值(可能在整个团队范围内对产品的工作原理充满活力)。如果编写的功能文件不能带给您那么高的价值,那么您将所有时间都花在测试框架的昂贵且不必要的层上。黄瓜基本上成为了光荣的测试跑步者,并且如果您确实不需要BDD应该提供的价值,则有很多便宜的方法来运行测试。