В Node-JS Selenium, как получить имя сценария огурца и встроить текст в мой отчет из определения шага

Я могу получить это в версии огурца 1.X, но обновление огурца до более высокой версии не может использовать (это), и он говорит, что script.getName() не является функцией.

Мне это нужно, потому что мой тест зависит от имени сценария, поскольку он включает общую функцию для разных тестовых данных.

Вот как я получаю имя сценария в версии Cucumber 1.x.

`module.exports= function Steps() {
this.BeforeScenario(function (scenario, callback) {
        var currentScenarioName = scenario.getName();
        console.log(scenario.getName());
        callback(null);
    });
};`

И другой вопрос: как вставить текст в отчеты о моем огурце из моего определения шага вместо того, чтобы делать это в хуках после функции


person Saravanan    schedule 02.03.2018    source источник


Ответы (2)


В Cucumber 3.x, чтобы получить имя сценария, вы можете использовать первый параметр, переданный перед хуком, который представляет собой маринованную версию объекта Scenario. Вот код:

const { defineSupportCode } = require('cucumber');

defineSupportCode(function({Before}) {
    Before((scenario)=> {
      console.log('before scenario', scenario.name);
    });
})

вы можете распечатать этот объект сценария, чтобы узнать, какая еще информация содержится в этом объекте.

Вот документ, в котором упоминается " testCase", который равен указанному выше параметру сценария.

Кстати, кажется, вы используете как Cucumber 1.x, так и 3.x. Вы можете попробовать CukeTest, который позволяет редактировать обе версии, а также обеспечивает генерацию и проверку кода.

Также поделитесь, как вы вставляете текст в отчет в своей текущей версии, я знаю только метод «прикрепить» в объекте «Мир», который может вставлять изображения в отчет.

person Lean Prop    schedule 02.03.2018

Чтобы расширить ответ Lean Prop, я обнаружил, что в Cucumber 4.x (с использованием 4.1) этот код работает:

const { defineSupportCode } = require('cucumber');

defineSupportCode(function({Before}) {
    Before((scenario)=> {
      console.log('scenario.pickle.name);
    });
})
person Carter Nosflow    schedule 24.04.2018
comment
Хотя этот фрагмент кода может решить вопрос, включение объяснения помогает улучшить качество вашего ответа. Помните, что вы отвечаете на вопрос для будущих читателей, и эти люди могут не знать причин вашего предложения кода. - person Stefan Crain; 24.04.2018