【问题标题】:Is there a way to run a cucumber scenario multiple times over a list of dynamically generated data?有没有办法在动态生成的数据列表上多次运行黄瓜场景?
【发布时间】:2014-03-19 21:36:19
【问题描述】:

例如,我有一个产品的 id 列表,该产品位于数据库中并且每天更新。我需要能够运行一个使用该数据并按顺序在每个 ID 上运行相同步骤的场景。但是,测试不应停止,因为其中一个 id 在场景中失败,类似于 cucumber 对场景大纲类型测试所做的事情。

我们还希望格式化 cucumber 测试的输出,以便每个 id 都被格式化为“场景大纲”中的单独测试或示例。

【问题讨论】:

  • 你想证明什么行为,系统处理了多种数据,或者数据库中的数据是好的?这些都可以在不改变黄瓜意图的情况下完成。
  • 戴夫,我正在尝试运行相同的场景,在我们从数据库中获取的每个 id 之前运行一次。我们想测试使用该 id 描述的网站的某些功能,但如果其中一个 id 导致步骤失败,我们不想停止测试。
  • 黄瓜证明行为。当我设计场景时,我从没有数据开始,然后为我的场景加载我想要的数据。该数据旨在证明某些事情。如果我想证明非常长的类别名称,我将加载具有长名称的类别。如果我想证明分页,我将加载比页面容纳更多的类别。如果我想确保所有类别都可以打开,那么我不会为此使用黄瓜。那不是行为,那是内容。

标签: cucumber


【解决方案1】:

我相信我前段时间做过类似的事情。看看这个feature definition

然后我应该能够进入浏览类别页面”操作定义为here,如您所见,Category 在第 59 行检索来自this class 的数据。在这种情况下,我从 CSV 文件中获取数据,但您可以将其替换为您的数据库。

我的 Ruby 有点基础,所以代码风格可能看起来不太好,但这是我用来轻松解释我所做的事情的示例。希望对您有所帮助!

【讨论】:

    【解决方案2】:

    Cucumber 的设计目的不是在特征文件中写入复杂的信息, 如果您的数据很复杂,或者是动态生成的,您应该在步骤定义中获取数据并在特征文件中编写一个通用术语。

    这就是 cucumber 的用意,写简单的功能让非技术人员很容易理解场景在做什么。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多