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

Can we call one scenario inside another scenario in cucumber?

我开始使用行为驱动工具 cucumber。它是一个有趣的工具。当我正在处理一个问题时。大多数时候我都遇到过,我没有重用我的代码。

这就是为什么我要从另一个场景调用一个场景。我搜索过但没有找到任何帮助。我可以这样做吗?

另一个相同的问题已发布 here on github

这可能是您要查找的内容: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}
  }

我遇到了同样的问题 - 并找到了这个 post。也许是故意的,你不能从其他场景中调用场景。该框架基于您考虑创建实用的 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...

}

因此,与任何其他框架一样,cucumber 也有其局限性,但它们是有意为之的,您有办法解决它。 ;)

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