[英]Override a step declaration in SpecFlow?
因此,在我的工作中,我们有一个核心SpecFlow库,我们的不同团队可以将其用于自动化。 该库具有一些声明的步骤。
例如,库可能具有以下内容:
When I click the button
但是,假设我要定义自己的步骤声明,该声明使用完全相同的措词。 是否可以覆盖它?
正如@Grasshopper所写,步骤定义是全局的。
但是您可以使用Scopes覆盖它。
参见http://www.specflow.org/documentation/Scoped-Bindings/
在这种情况下,请不要忘记在每种情况下都将指定标签或原始步骤定义。
这样做将是一个非常糟糕的主意,因为使用此步骤并失败的任何方案都将很难理解和调试。
通常,在方案中使用通用库步骤也不是一个好主意。 方案不应包含通用步骤或如何完成操作的描述。 相反,它们应该包含特定于您的业务上下文的步骤,并且这些步骤应该描述正在做什么以及为什么要做。
所以代替
When I click on sign in
And I fill in my email with ...
...
我们得到了更简单,更抽象的
When I sign in
这与我们正在做的事情有关,而与我们如何做无关。
如果在同一步骤定义文件或另一个步骤定义文件中有相同的步骤(在您的情况下,当我单击按钮时)两次,则将得到DuplicateStepException。 即使您使用给定或注释。 这是因为步骤定义是全局加载的,从而导致冲突。
另外,您不能扩展包含文件的stepdefinition或hook,因为黄瓜会抛出错误,这是不可接受的。 因此,您无法通过继承覆盖行为。
您将需要一起编写一个不同的步骤,或者在可能的情况下将按钮作为参数传递给现有步骤,并在允许修改库代码的情况下输入逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.