Cucumber-js: Отчетность - вывод в файл

Созданный на 2 окт. 2012  ·  29Комментарии  ·  Источник: cucumber/cucumber-js

В настоящее время невозможно указать «выходной» файл в качестве аргумента CLI для сохранения отчетов. Средство форматирования JSON, похоже, записывает непосредственно в STDOUT, что может быть проблемой при отладке (с использованием console.log) или в случае сбоя программы, создавая недопустимый JSON.

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

Самый полезный комментарий

@cedriclombardot

Есть способ выбрать каталог для вывода json из транспортира из 1.5.0, хотя я его не использовал.
В настоящее время я добавил ловушку, чтобы можно было использовать вместе pretty и json formatter:

module.exports = function JsonOutputHook() {
  var Cucumber = require('cucumber');
  var JsonFormatter = Cucumber.Listener.JsonFormatter();
  var fs = require('fs');

  JsonFormatter.log = function (json) {
    fs.writeFile('test/e2e/output/cucumberReport.json', json, function (err) {
      if (err) throw err;
      console.log('json file location: test/e2e/output/cucumberReport.json');
    });
  };

  this.registerListener(JsonFormatter);
};

Все 29 Комментарий

На самом деле здесь есть две отдельные проблемы:

  1. перенаправить вывод средства форматирования (не только JSON, но и _pretty_, _progress_, _html_ и т. д.) в другой файл, кроме STDOUT;
  2. позволяют использовать несколько форматеров за один прогон.

Я создал отдельную проблему, касающуюся нескольких форматеров.

Жюльен, есть какие-нибудь новости о том, когда мы сможем указать выходной файл HTML?

+1

+1

ПРИВЕТ Я вручную копировал и вставлял содержимое результатов JSON в файл cucumber.json в каталоге данных cucumber-json2report-master, что позволяет мне получить хорошие результаты выполнения, но было бы здорово, если бы cucumber.js может поместить файл в этот каталог, исключив ручной шаг.

Я не особо хочу взламывать версию или создавать форк. Предложения?

Есть новости по этому поводу?

@letshaveyer это звучит как полезная функция для вас. Почему бы вам не отправить запрос на перенос?

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

Измените объект formatterIo, чтобы он также записывал в файл

var formatterIo = {
write: function (строка) {
self.log (строка);
fs.writeFileSync ('путь \ test_results.json', строка); // добавлен
}
};

Это простая вещь, которую можно сделать с помощью простых перенаправлений каналов в unix и bash.

cucumber-js --format=json | tee wow.json

+1, чтобы закрыть

Мы не можем его протрубить. Мы используем файл конфигурации транспортира для установки cucumberjs
параметры

CucumberOpts: {
Формат: 'JSON',
Теги: ' @testRun '
}

У нас есть файл bat, который использует узел для запуска транспортира.

Брэд
5 августа 2014 г. в 9:54 «Сэм Сакконе» [email protected] написал:

Это простая вещь, которую можно сделать с помощью простых перенаправлений каналов в unix.

огурец-js --format = json | тройник wow.json

+1, чтобы закрыть

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -51199997.

Интересно @ brad8118, похоже, это особенность транспортира, а не огурца.

транспортир вызывает огурец, и за то, что он делает с выводом, отвечает транспортир, а не огурец.

Это только мои первые мысли, открытые для идей. Я просто пытаюсь предотвратить расползание функций библиотеки огурцов.

@ brad8118 Я использую транспортир. Я действительно не хочу путать исходный код. Есть ли способ добавить для этого хук или файл поддержки?

var formatterIo = {
write: function(string){
self.log(string);
fs.writeFileSync('path\test_results.json', string); // added
}
};

Использование транспортира

@ jlin412 , я не знаю, как передать / получить создаваемый json без изменения cucumber.js.
Я также подумал о функции очистки в нашем конфигурационном файле транспортира json. Но он передает только 1 или 0.

// ----- The cleanup step -----
//
// A callback function called once the tests have finished running and
// the webdriver instance has been shut down. It is passed the exit code
// (0 if the tests passed or 1 if not).
onCleanUp: function () {}

Похоже, это уже сделано в другой вилке. николассеншал @ b337b18

@ jlin412, когда вы мило вставляете

@ brad8118 Я использую перенаправление для отправки вывода json в файл из транспортира, а затем у меня есть функция задачи grunt для фильтрации формата json с использованием соответствия регулярному выражению:

  grunt.registerTask('jsonOutput', function () {
    var testOutput = grunt.file.read('test/e2e/tmp/cucumberOutput.json');
    var json = testOutput.match(/(\[\s+\{[\s\S]*\}\s+\]\s+\}\s+\]\s+\}\s+\])/)[1];
    grunt.file.write('test/e2e/output/cucumberReport.json', json);
  });

Затем я использую сэндвич с огурцом для преобразования в HTML (проект Java).
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/

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

Привет, ребята, просто пытаетесь понять, когда это будет возвращено мастеру cucumber-js? Мне нужна эта функциональность сейчас, но я опасаюсь полагаться на разветвленную ветку. Не могли бы вы дать мне представление о том, когда он будет доступен в cucumber-js master, и дать краткое представление о том, разумно ли пока что полагаться на одну из разветвленных веток? Спасибо, Фрейзер.

+1 - Я знаю, что не только я пережил некоторые сумасшедшие попытки использовать огурец с транспортиром, когда флаг для записи в файл был бы ооочень полезным. Я не понимаю, почему запись в файл считается нарушением функций. Огурец предназначен только для того, чтобы разработчики могли визуально проверять качество своей работы? Разве мы не должны использовать огурец в рамках более крупной тестовой среды? Этого не может быть ...

Привет,

Кто-нибудь может мне помочь, я не нашел, как правильно настроить вывод json в файл.
Я использую глоток + транспортир + огурец

заранее спасибо

@cedriclombardot

Есть способ выбрать каталог для вывода json из транспортира из 1.5.0, хотя я его не использовал.
В настоящее время я добавил ловушку, чтобы можно было использовать вместе pretty и json formatter:

module.exports = function JsonOutputHook() {
  var Cucumber = require('cucumber');
  var JsonFormatter = Cucumber.Listener.JsonFormatter();
  var fs = require('fs');

  JsonFormatter.log = function (json) {
    fs.writeFile('test/e2e/output/cucumberReport.json', json, function (err) {
      if (err) throw err;
      console.log('json file location: test/e2e/output/cucumberReport.json');
    });
  };

  this.registerListener(JsonFormatter);
};

Я не видел, чтобы resultJsonOutputFile кажется, работает волшебно и готово
перейти в xml с помощью: https://www.npmjs.com/package/protractor-cucumber-junit

Седрик

2015-01-02 18:34 GMT + 01: 00 Джейсон Лин [email protected] :

@cedriclombardot https://github.com/cedriclombardot

Есть способ выбрать каталог для вывода json из транспортира из
1.5.0, хотя я им не пользовался.
В настоящее время я добавил ловушку, чтобы можно было использовать вместе pretty и json formatter:

module.exports = function JsonOutputHook () {
var Cucumber = require ('огурец');
var JsonFormatter = Cucumber.Listener.JsonFormatter ();
var fs = require ('fs');

JsonFormatter.log = function (json) {
fs.writeFile ('test / e2e / output / cucumberReport.json', json, function (err) {
если (ошибка) бросить ошибку;
console.log ('расположение файла json: test / e2e / output / cucumberReport.json');
});
};

this.registerListener (JsonFormatter);
};

-
Ответьте на это письмо напрямую или просмотрите его на GitHub
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -68544890.

+1

Итак, не могли бы мы получить обновленную информацию о том, когда это будет передано мастеру? В настоящее время я использую cucumberjs минус транспортир (или любую другую структуру веб-тестирования в стиле селена), поэтому мне нужны cucumberjs для создания форматированного отчета.

Есть новости по этому поводу? Это вызвало у нас достаточно проблем, чтобы подумать о том, чтобы исправить этот модуль или посмотреть на parallel-cucumber (который обрабатывает этот случай).

cucumberjs -> webdriverio

+1

Я следую этому описанию, чтобы сохранить json-формат cucumberjs.

https://github.com/mrooding/gulp-protractor-cucumber-html-report#saving -cucumberjs-json-to-disk-when-using-protractor

  1. Добавьте слушателя в средство форматирования CucumberJS JSON и сохраните его в файл.
  2. protractor.conf.js добавляет ссылку на прослушиватель ловушки

Это работает

если кому-то не хватает счастливого часа из-за отчетов cucumber js, мы используем cucumber-html-reports

  1. обновите свой hooks.js
support.registerHandler('AfterFeatures', () => {
    ///* creates report
    var options = {
        theme: 'bootstrap',
        jsonFile: 'cucumberReports/report.json',
        output: 'cucumberReports/report.html',
        reportSuiteAsScenarios: true,
        launchReport: true,
        metadata: {
            "App Version":"0.3.2",
            "Test Environment": "POC",
            //"Browser": "Chrome  54.0.2840.98",
            //"Platform": "Windows 10",
            //"Parallel": "Scenarios",
            //"Executed": "Remote"
        }
      };

    reporter.generate(options);
  });

обновите ваш protractor.conf.cucumberOpts
format: 'json:cucumberReports/report.json',

Этот поток был автоматически заблокирован, поскольку после его закрытия в последнее время не было никаких действий. Пожалуйста, откройте новую проблему для связанных ошибок.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги