Cucumber-js: 报告 - 输出到文件

创建于 2012-10-02  ·  29评论  ·  资料来源: cucumber/cucumber-js

当前无法将“输出”文件指定为用于保存报告的 CLI 参数。 JSON 格式化程序似乎直接写入 STDOUT,这在调试(使用 console.log)或程序失败时可能会出现问题,产生无效的 JSON。

如果它像红宝石中的黄瓜一样工作,允许将多种格式保存到单独的输出文件中,那将是可取的。

最有用的评论

@塞德里克隆巴多

有一种方法可以从 1.5.0 的量角器中选择一个目录到 json 输出,尽管我还没有使用过它。
目前,我添加了一个钩子,所以我可以一起使用漂亮和 json 格式化程序:

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. 允许在一次运行中使用多个格式化程序。

我创建了一个关于多个格式化程序的单独问题

Julien 有什么关于我们什么时候可以指定 HTML 输出文件的消息吗?

+1

+1

嗨,我一直在手动将 JSON 结果的内容复制并粘贴到 Cucumber-json2report-master 数据目录中的 Cucumber.json 文件中,这确实让我获得了一些不错的运行结果,但是如果Cucumber.js 可以将文件放在该目录中,从而消除手动步骤。

我真的不想破解版本或创建一个分支。 建议?

这事有进一步更新吗?

@letshaveyer这对您来说听起来像是一个有用的功能。 为什么不发送拉取请求?

在此之前,您可以修改 json_formatter.js。 这是 hack 但比每次复制粘贴要容易得多。 我们还在文件名中添加时间戳。

将 formatterIo 对象更改为也写入文件

var formatterIo = {
写:函数(字符串){
self.log(string);
fs.writeFileSync('path\test_results.json', string); // 添加
}
};

这是用 unix 和 bash 中的简单管道重定向做的一件简单的事情

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

+1 关闭

我们不能管它。 我们使用量角器的配置文件来设置cucumberjs
选项

黄瓜选项:{
格式:'JSON',
标签:' @testRun '
}

我们有一个使用 node 启动量角器的 bat 文件。

布拉德
2014 年 8 月 5 日上午 9:54,“Sam Saccone”通知@ github.com 写道:

这是在 unix 中用简单的管道重定向做的一件简单的事情

黄瓜-js --format=json | tee 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
}
};

@samccone量角器使用本机报告取决于您使用的框架。 如果您使用 Jasmine,它将使用 Jasmine 中的报告。 如果您使用的是cucumber 框架,它将使用cucumber.js 中的报告,目前无法输出文件。

@jlin412 ,我不知道如何在不改变cucumber.js 的情况下传递/获取正在生成的json。
我还考虑了量角器 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 () {}

看起来这已经在另一个叉子中完成了。 nicolassenechal@b337b18

@jlin412当您可爱并粘贴 json 时。 你用它做什么? 你把它转换成html吗?

@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/

我对黄瓜三明治代码库进行了轻微修改,因此我可以按需调用它,而不是依赖于文件事件侦听器。

嗨,伙计们,只是想弄清楚什么时候这将被提交回黄瓜 js 大师? 我现在需要这个功能,但我对依赖分叉分支持谨慎态度。 您能否告诉我什么时候可以在 Cucumber-js master 中使用它,并快速了解在此期间依赖其中一个分叉分支是否明智? 谢谢,弗雷泽。

+1——我知道,当写入文件的标志非常有用时,我并不是唯一一个通过一些疯狂的扭曲来使用带有量角器的黄瓜的人。 我不明白为什么写入文件被认为是功能蠕变。 Cucumber 只是为了让开发人员可以目视检查他们的工作质量吗? 我们不是应该在更大的测试环境范围内使用cucumber吗? 这不可能是...

你好,

任何人都可以帮助我,我还没有找到如何将 json 输出正确配置到文件中。
我用 gulp+protractor+cucumberjs

提前致谢

@塞德里克隆巴多

有一种方法可以从 1.5.0 的量角器中选择一个目录到 json 输出,尽管我还没有使用过它。
目前,我添加了一个钩子,所以我可以一起使用漂亮和 json 格式化程序:

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 :

塞德里克

2015-01-02 18:34 GMT+01:00 Jason Lin通知@github.com

@cedriclombardot https://github.com/cedriclombardot

有一种方法可以从量角器中选择一个目录到 json 输出
1.5.0 虽然我没用过。
目前,我添加了一个钩子,所以我可以一起使用漂亮和 json 格式化程序:

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

JsonFormatter.log = 函数(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

那么我们能否获得有关何时将提交给 master 的更新? 我目前正在使用 Cucumberjs 减去量角器(或任何其他 selenium 风格的 Web 测试框架),所以我需要 Cucumberjs 来生成一个格式化的报告。

这事有进一步更新吗? 这给我们带来了足够的问题来考虑修补这个模块或查看 parallel-cucumber(处理这种情况)。

Cucumberjs -> webdriverio

+1

我按照这个描述来保存cucumberjs json格式。

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 等级