我们可以在黄瓜的另一个场景中调用一个场景吗?

时间:2016-06-28 11:25:12

标签: cucumber

我开始使用行为驱动的工具黄瓜。它是一个有趣的工具。我正在研究一个问题。我大部分时间都遇到过这种情况,我没有重复使用我的代码。

这就是我想从另一个场景调用场景的原因。我搜索过,但没有找到任何帮助。我能这样做吗?

另一个问题here on github

2 个答案:

答案 0 :(得分:7)

这可能是您正在寻找的内容:https://github.com/cucumber/cucumber/wiki/Calling-Steps-from-Step-Definitions

所以你可以做几件事。如果您有一个步骤,您想重复使用,如下所示:

Given /^I log in as (.*)$/ do |name|
  # ...
end

您可以在另一个步骤中调用它:

Given /^(.*) is logged in$/ do |name|
  step "I log in as #{name}"
end

您还可以在步骤定义中执行以下操作:

steps %Q{
    Given I log in as #{name}
  }

答案 1 :(得分:0)

我遇到了同样的问题-找到了这篇文章。也许是出于故意,您不能从其他方案中调用方案。该框架基于您考虑创建实用的Stepdefinitions的基础,因此可以多次使用它们。基础是在创建步骤之前先思考...

我创建了自己的步骤,例如登录方法,到搜索页的页面转换或新文件等。 因此,在许多情况下,我都重复使用这些步骤-然后添加新的步骤(也可以重复使用)。

现在您可以考虑应该迈出多少个步骤。您可以将它的大小设置为测试对象中的一个动作,也可以将其用作例程以通过多个动作到达测试的某个特定起点。例如。 Given Go to Startpage of creating a security request Java代码:

@Given ("^Go to Startpage of creating a security request$")
public void GoToStartpageOfCreatingASecurityRequest(){
//logic to get to the demanded point in testobject...

}

因此,与其他任何框架一样,黄瓜也有其局限性,但是它们是有意为之的,您有多种方法可以解决它。 ;)

不要忘记在测试中使用断言。无论您使用JUNIT还是TestNG(我使用TestNG)。 ;)