#selenium #cucumber #testng #cucumber-java
#селен #огурец #testng #cucumber-java
Вопрос:
Я создал проект, в котором пытаюсь запустить тесты Cucumber Selenium Java с помощью плагина TestNG. Мой класс Runner :
import org.testng.annotations.BeforeMethod;
import org.testng.annotations.DataProvider;
import io.cucumber.testng.AbstractTestNGCucumberTests;
import io.cucumber.testng.CucumberOptions;
@CucumberOptions(features = "src/test/resources", monochrome = true, glue = "com.ipkgs.stepdefinitions", plugin = {
"html:target/cucumber-html-report", "json:target/cucumber-json-report.json" }, dryRun = false)
public class CucumberTests extends AbstractTestNGCucumberTests {
@DataProvider(parallel = true)
public Object[][] scenarios() {
return super.scenarios();
}
}
Я создаю класс listener, в котором я хочу получить сведения о результате, а также детали сценария, например, при каком сценарии произошел сбой на каком шаге.
Я расширяю ITestListener, но он дает мне только результат прохождения / сбоя без деталей сценария.
Есть ли какой-нибудь способ добиться этого?
Ответ №1:
Для этого не следует использовать прослушиватели TestNG.В то время как Cucumber «знает» о TestNG, TestNG, в свою очередь, ничего не знает о Cucumber. Вам необходимо использовать механизм hooks для просмотра статуса выполнения вашего сценария.
Пример из документации:
@After
public void doSomethingAfter(Scenario scenario){
// Do something after after scenario
}
@AfterStep
public void doSomethingAfterStep(Scenario scenario){
// Do something after after step
}
Комментарии:
1. Да, я пробовал это раньше, но проблема в том, что мне нужно реализовать эти перехваты в каждом файле step def
2. Что вы имеете в виду? Согласно документам, в которых определен хук, не влияет на то, для каких сценариев или шагов он выполняется . Чего вы пытаетесь достичь? Можете ли вы поделиться примером использования?
3. Перехваты могут быть определены только в файлах определения шага. не так ли? Итак, я должен поместить хуки в каждый из файлов stepdef?
4. Нет, это не так. Не существует такого термина, как «файл определения шага» (по крайней мере, если вы говорите о классическом синтаксисе, где вы определяете свои шаги с помощью аннотаций). Определение шага — это не класс, а метод. Таким образом, ничто не мешает вам хранить ваши хуки в отдельном классе. Это должны быть места в пакете или подпакетах того, что вы указываете в
glue
опции.