behat FeatureContext.php как пропустить сценарий

Я пытаюсь найти способ пропустить сценарии в 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
}

кто-нибудь знает, как я могу сказать, чтобы пропустить сценарий?

(поведение v2.5.5)


person Fanor    schedule 13.10.2015    source источник


Ответы (2)


Это работа для вашего инструмента непрерывной интеграции.

Создайте новый путь в файле 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

Если вы включите скрипт в инструмент непрерывной интеграции, который будет выбирать, какой из них запустить, вы должны быть на правильном пути.

Если вы запускаете тесты в эти даты вручную, измените «события» на «по умолчанию», и они будут работать как обычно, удаляя при этом все сценарии, отмеченные «@event».

person KyleFairns    schedule 05.02.2016
comment
Да, это немного похоже на то, что мы сделали это. У меня есть build.xml для Jenkins CI, в котором есть исполняемый файл php, который выполняет команду оболочки. С условием даты я просто добавляю к комментарию --tags ~@weeksale, чтобы исключить все тесты поведения с этим тегом. Спасибо за Ваш ответ - person Fanor; 05.02.2016

Над вашим сценарием просто добавьте тег, скажем, @weeksale в вашем примере.

при выполнении вашего сценария запустите команду behat --tags '~@weeksale'

~ (отрицательный) не запускает конкретный помеченный сценарий.

person Avni    schedule 10.08.2016