Как игнорировать конкретный сценарий в огурцах?

  • Я использую сценарий огурца для подачи и java как язык.
  • Мне нужно игнорировать конкретный сценарий при запуске теста автоматизации.
  • Я пробовал с синтаксисом @ignore ниже, он вообще не работает.
  • Он не пропускает определенный сценарий, он продолжает выполнять весь тестовый сценарий, который у меня есть в файле функций.

Файл функций

@ActivateSegment
Feature: Test for Activate segment

  Scenario: Login
    Given I navigate to M
    And I enter user name 
    And I enter password 
    And I login to MM

  Scenario: Open grid
    Given I choose menu
    And I choose Segments menu

  Scenario: Open segment creation page
    Given I click on New button
    And I click on Segment button

Ответ 1

Использовать тег [email protected]_name

Чтобы исключить сценарии с определенным тегом

cucumber --tags [email protected]_name

Примечание Я использовал символ ~.


Следует отметить, что Cucumber выйдет со статусом 1, если ваши @-тип-тегированные сценарии проходят (это напоминание о том, что theyre не работает в процессе с тех пор, как они проходят).

ОБНОВЛЕНИЕ 1

Пример сценария

@billing
Feature: Verify billing

  @important
  Scenario: Missing product description

  Scenario: Several products

Запуск тегов

cucumber --tags @billing            # Runs both scenarios
cucumber --tags @important          # Runs the first scenario
cucumber --tags [email protected]         # Runs the second scenario (Scenarios without @important)

Официальный документ: https://github.com/cucumber/cucumber/wiki/Tags

Ответ 2

Согласно Cucumber.io есть 2 стиля, в которых можно определить выражение тега. Для вашего конкретного случая, чтобы исключить шаги или функции, помеченные @ignore, эти 2 стиля переводятся в:

  • старый стиль: cucumber --tags [email protected]
  • новый стиль: cucumber --tags "not @ignore".

К моему удивлению, используя тот же cucumber-js v1.3.1, который работает на Node.js v6.9.2, я обнаружил, что версия для Windows поддерживает только новый стиль, а версия для Linux - только старый. В зависимости от ваших настроек, вы можете попробовать оба варианта и посмотреть, добьетесь ли вы успеха с любым из них.

Ответ 3

*. Функция

@skip_scenario
Scenario: Hey i am a scenario
  Given blah blah
  And blah blah blah

CucumberHooks.java

package CucumberHooks;
import cucumber.api.Scenario;
import cucumber.api.java.Before;

public class CucumberHooks {
    @Before("@skip_scenario")
    public void skip_scenario(Scenario scenario){
        System.out.println("SKIP SCENARIO: " + scenario.getName());
        Assume.assumeTrue(false);
    }
}

Ответ 4

@ActivateSegment
Feature: Test for Activate segment

  Scenario: Login
    Given I navigate to M
    And I enter user name 
    And I enter password 
    And I login to MM

  Scenario: Open grid
    Given I choose menu
    And I choose Segments menu

   @avoid
  Scenario: Open segment creation page
    Given I click on New button
    And I click on Segment button

в огурцах

в классе бегуна используйте теги, как показано ниже, которые вы не хотите запускать: tags = {"~ @избежать"}

Ответ 5

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

У него даже есть связанный переключатель командной строки:

-w, --wip Fail if there are any passing scenarios.

Ответ 6

Используя JUnit runner class и со ссылкой на https://cucumber.io/docs/cucumber/api/#ignoring-a-subset-of-scenarios

Вы можете создать свой собственный тег игнорирования

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(tags = "not @ignore")
public class RunCucumberTest {
}

Затем просто пометьте сценарий так:

  @ignore
  Scenario: Check if all the 3 categories of cats are displayed

    Given I open the Cats App

    When I view the home screen

    Then I should see all three cats categories displayed

Ответ 7

Из командной строки вы можете написать

mvn test -DCucumber.options = "--tags '@login, а не @grid'"

поставить двойные кавычки ("") снаружи и одинарные кавычки (') внутри