避免黄瓜中的例子

Avoiding examples in cucumber

请告诉我如何在 Cucumber 中跳过使用示例进行测试迭代?我希望功能文件应该只有测试步骤,并且在步骤定义中我想使用类似 testng dataprovider 的东西进行迭代。我尝试了数据提供程序,但由于它与 @Test 标记一起使用,所以看起来它不是一个可行的解决方案。有帮助吗?

我认为这是不可能的,因为场景大纲适用于示例 table 到 运行 具有不同值的相同场景。但是如果你想减小示例 table 的大小,那么我更喜欢你在 JSON 文件中添加数据,然后在示例 table 中的此处添加键,然后使用这些键的帮助 :) 如果你有单行数据,那么你可以在黄瓜中使用 before 和 after 钩子,并尝试在钩子的帮助下更新数据。

首先,Cucumber 不是测试工具,它是协作开发行为的工具。因此,您绝对不想使用 Cucumber 为同一事物编写大量迭代测试。而是尝试使用单元测试工具在较低级别测试此类测试。编写良好的单元测试可以轻松 运行 比标准 Cuke 快 1000 倍,因此如果您对同一事物进行大量测试,则可以使用这种方法节省大量 运行 时间。

如果由于某种原因您不能这样做,那么为测试迭代提供数据的地方是在由步骤定义调用的辅助方法中。一旦您进入辅助方法,您就进入了您的编程语言,因此您可以轻松获取外部文件、读取流和循环。这是比使用场景大纲和大型示例表更好的方法

您可以通过 cucumber.io 和 Cucumber 松弛通道了解如何使用辅助方法以及如何从步骤定义中调用它们。

如果您想知道如何在 Ruby 中进行操作,请告诉我,我会添加另一个答案。