Как игнорировать конкретный сценарий в огурцах?
- Я использую сценарий огурца для подачи и 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'"
поставить двойные кавычки ("") снаружи и одинарные кавычки (') внутри