Как получить все шаги сценария огурца перед крючком? - PullRequest
0 голосов
/ 24 мая 2019

Я хочу получить доступ ко всем шагам сценария огурца в @before ловушке. Есть ли способ сделать это?

Я попытался передать объект сценария огурца в методе before hook, но он предоставляет только основную информацию, такую ​​как scenario.getName(), scenario.getId(). Мне нужно что-то вроде getSteps(), которое дает мне List<String> всех шагов этого конкретного сценария.

Я ищу что-то вроде этого

    @Before("@dev")
public void testcase(Scenario scenario){

    for (Step a : scenario.getSteps()) {
        System.out.println("scenario step = " + a.getText());
    }
}

По сути, я хочу получить полную информацию о сценарии в самом начале выполнения теста.

Если я передам аргумент класса cucumber.api.TestCase в методе before, я смогу получить доступ к методу getTestSteps(), но это приведет к исключению ниже.

cucumber.runtime.CucumberException: When a hook declares an argument it must be of type cucumber.api.Scenario. public void com.thermofisher.bid.spa.kingfisher.ui.steps.Hooks.poc(cucumber.api.TestCase)

Ответы [ 2 ]

0 голосов
/ 24 мая 2019

Java:

См. Интерфейс TestCase в разделе cucumber-jvm/core/src/main/java/cucumber/api/TestCase.java

https://github.com/cucumber/cucumber-jvm/blob/master/core/src/main/java/cucumber/api/TestCase.java

testcase.getTestSteps();

Iзнаю, что вопрос не относится к ruby, но хочу предоставить решение и в ruby, чтобы оно могло помочь кому-то, кто ищет решение в ruby.

Ruby: Даствесь список шагов.

scenario.source[1].steps
0 голосов
/ 24 мая 2019

Cucumber не предоставляет вам никакого прямого метода, который собирает полную информацию о сценарии внутри Hook.Существует Интерфейс сценария , который может предоставить вам очень ограниченную информацию, такую ​​как имя сценария и ниже приведены остальные прямые методы этого интерфейса.

public interface Scenario {
    Collection<String> getSourceTagNames();
    Result.Type getStatus();
    boolean isFailed();
    void embed(byte[] data, String mimeType);
    void write(String text);
    String getName();
    String getId();
    String getUri();
    List<Integer> getLines();
}

enter image description here

...