【问题标题】:How to test for same feature with multiple backgrounds in cucumber如何在黄瓜中测试具有多个背景的相同功能
【发布时间】:2012-10-30 15:07:09
【问题描述】:

我有一个在黄瓜中运行良好的功能(.feature 文件)。

该功能中所有场景的后台只是设置了一个用户,然后以管理员身份登录,例如

   Background:
     Given I am logged in as a supervisor with an existing supervisee

   ...loads of scenarios

但是,应用程序的设计/目标发生了变化,无论您是以主管还是用户身份登录,相同的场景都应该可以正常工作。对于大多数其他应用程序的设计对于主管/用户来说不对称,情况并非如此。

是否有任何明智的方法可以避免复制和粘贴具有不同背景的整个功能文件?似乎没有一种方法可以对背景进行参数化(例如,使用 Either: 或:节),也没有一种方法可以拉入带有大量场景的外部文件。想法?

   Background:
     Given I am logged in as an existing supervisee

   ...same loads of scenarios

这是一些奇幻的小黄瓜语法(不存在)

   Background Outline:
     Given I am logged in as a <user>

   Backgrounds:
     | user                                   |
     | supervisor with an existing supervisee |
     | an existing supervisee                 |

   ...loads of scenarios

另一种不同的幻想小黄瓜语法:

   Background:
     Given I am logged in as an existing supervisee

   Include Scenarios:
     supervisor.features

【问题讨论】:

  • 我不清楚你想做什么改变。你能展示一下背景,解释它目前表现出的行为,并描述你希望它如何表现吗?
  • @MarkThomas 我已经添加了一个现有的背景、复制和粘贴版本,以及一些“幻想小黄瓜语法”来表明我的目标
  • @TimDiggins 我知道这是一个老问题,但我很好奇您是否找到了一种使用 Gherkin 来描述“背景轮廓”的方法? ...也许有人想出了一个扩展?
  • @muhqu,不,我只是留下了重复。我可以看到太多的复杂性可能不符合 Cucumber 的要求。我有点不喜欢 cucumber(作为开发人员,出于 Spinach 项目核心的大多数原因),并且这些天倾向于只在 rspec 中编写功能/验收测试。我仍然经常编写 Gherkin-y(Given/When/Then)描述作为交流方式,但只是不要让它们可执行。

标签: cucumber


【解决方案1】:

如果是我,我会吸干复制品:

http://dannorth.net/2008/06/30/let-your-examples-flow/

另一种方法是在功能上使用一个标签,表明您要针对两个用户组运行场景。然后使用 Around 钩子运行场景两次,每种类型的用户一次。

我们之前讨论过背景大纲之类的东西,但我们得出的结论是,实施它不值得额外的复杂性。

【讨论】:

  • 我不想要重复,不是因为我是一个 DRY 狂热者,而是因为将它保存在一个地方实际上只是一个功能并且更具表现力。但是标记和使用周围的钩子是非常有表现力的。完美,谢谢!
  • 真的有用吗?似乎不可能多次执行一个块。请参阅this 答案。
  • @rsenna(对迟到的回应表示歉意)-我实际上并没有尝试,但留下了重复。我喜欢围绕钩子的想法,但工作量太大(而且看起来确实像它最终不会起作用)。
  • 我认为缺少背景轮廓使黄瓜非常笨拙,以至于除了最简单的情况外,它几乎无用。恕我直言,实施它是很容易的。
  • 我同意,这是一个绝对应该实现的功能。有人知道这方面是否有任何进一步的讨论?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-25
  • 2013-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多