behat FeatureContext.php 如何跳过场景

behat FeatureContext.php how to skip a scenario

我试图找到一种方法来跳过 FeatureContext.php 中的场景。 我得到了一个测试,只有条件正确时我才会执行,否则 der 将被跳过。我的想法是用“@weeksale”

之类的标签来检查场景
  @weeksale
  Scenario: test
    Given I go to "/"
    Then I should see "Unsere Leistungen"

在我的 FeatureContext 中我得到了一个条件,如果它是假的,他们就跳过了

 /**
 * @beforeScenario
 * @weeksale
 *
 * @param Behat\Behat\Event\ScenarioEvent $event
 */
public function weekSaleInTime($event)
{
    $dateUrl = $this->parameters['weekSaleDatePage'];
    $date = file_get_contents($dateUrl);

    $dateArray = explode("\r\n", $date);

    $result = $this->isCurrentDateBetween($dateArray[0], $dateArray[1]);

if($result == false)
{
  //behat skip this scenario
}

有人知道我如何告诉 behat 跳过场景吗?

(v2.5.5)

这就是您的持续集成工具要做的工作。

像这样在 behat.yml 文件中创建一个新路径:

event:
 filters:
    tags: '~@event'
 paths:
      features:  features
      bootstrap: %behat.paths.features%/bootstrap

 extensions:
    Behat\MinkExtension\Extension:
        base_url: http://<YOUR URL HERE>
        javascript_session: selenium2
        browser_name: <BROWSER>
        selenium2:
           browser: "<BROWSER>"
           wd_host: "http://127.0.0.1:9515/wd/hub"
        goutte: ~
 formatter:
    name:               pretty,html,junit
    parameters:
        output_path:    ,../ci/published/report.html,../ci/published

如果您在持续集成工具中包含一个脚本,该脚本将选择要 运行 的哪一个,您应该已经开始了。

如果您在这些日期内手动 运行 测试,将 "events" 更改为 "default",它将照常 运行,同时删除所有标记为"@event".

在您的场景上方,只需添加一个标签,在您的示例中说 @weeksale

执行场景时 运行 命令 behat --tags '~@weeksale'

~(否定)不 运行 特定的标记场景。