behat FeatureContext.php如何跳过一个场景

时间:2015-10-13 14:51:35

标签: php behat skip mink scenarios

我试图找到一种方法来跳过FeatureContext.php中的场景。 我得到了一个测试,我只会在条件合适的情况下执行,否则将跳过。我的想法是使用" @ 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)

2 个答案:

答案 0 :(得分:1)

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

在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”的所有方案。

答案 1 :(得分:0)

在您的方案之上,只需在示例

中添加标记@weeksale即可

执行场景时运行命令 behat --tags&#39;〜@ weeksale&#39;

~(否定)不会运行特定的标记方案。