Cucumber-js: Berichterstellung - Ausgabe in Datei

Erstellt am 2. Okt. 2012  ·  29Kommentare  ·  Quelle: cucumber/cucumber-js

Es ist derzeit nicht möglich, eine "Ausgabe"-Datei als CLI-Argument zum Speichern von Berichten anzugeben. Der JSON-Formatierer scheint direkt in STDOUT zu schreiben, was beim Debuggen (mit console.log) ein Problem darstellen kann oder wenn das Programm fehlschlägt und ungültiges JSON erzeugt.

Es wäre wünschenswert, wenn dies wie Gurke in Ruby funktionieren würde, sodass mehrere Formate in separaten Ausgabedateien gespeichert werden können.

Hilfreichster Kommentar

@cedriclombardot

Es gibt eine Möglichkeit, ein Verzeichnis für die Json-Ausgabe von Winkelmesser ab 1.5.0 auszuwählen, obwohl ich es nicht verwendet habe.
Derzeit habe ich einen Hook hinzugefügt, damit ich Pretty- und Json-Formatter zusammen verwenden kann:

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);
};

Alle 29 Kommentare

Hier gibt es eigentlich zwei getrennte Probleme:

  1. Umleitung der Formatierung (nicht nur JSON, sondern auch _pretty_, _progress_, _html_ usw.) Ausgabe in eine andere Datei als STDOUT;
  2. ermöglichen mehrere Formatierer in einem einzigen Durchlauf.

Ich habe ein separates Problem bezüglich der mehreren Formatierer erstellt.

Julien, gibt es Neuigkeiten, wann wir eine HTML-Ausgabedatei angeben können?

+1

+1

HI Ich habe den Inhalt der JSON-Ergebnisse manuell kopiert und in die Datei cucumber.json im Datenverzeichnis von cucumber-json2report-master eingefügt, wodurch ich einige schöne Ergebnisse des Laufs erhalten kann, aber es wäre großartig, wenn cucumber.js könnte die Datei in diesem Verzeichnis ablegen, wodurch der manuelle Schritt entfällt.

Ich möchte nicht wirklich die Version hacken oder einen Fork erstellen. Vorschläge?

Gibt es hierzu Neuigkeiten?

@letshaveyer das klingt für Sie nach einer nützlichen Funktion. Warum schickst du keinen Pull-Request?

Bis dies funktioniert, können Sie json_formatter.js ändern. Dies ist ein Hack, aber viel einfacher, als jedes Mal ein Einfügen zu kopieren. Wir fügen dem Dateinamen auch einen Zeitstempel hinzu.

Ändern Sie das formatterIo-Objekt, um auch in eine Datei zu schreiben

var formatterIo = {
schreiben: Funktion (Zeichenfolge) {
self.log(string);
fs.writeFileSync('path\test_results.json', string); // hinzugefügt
}
};

Dies ist eine einfache Sache mit einfachen Pipe-Umleitungen in Unix und Bash

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

+1 zum Schließen

Wir können es nicht leiten. Wir verwenden die Konfigurationsdatei des Winkelmessers, um cucumberjs einzustellen
Optionen

GurkenOpts: {
Format: 'JSON',
Schlagworte: ' @testRun '
}

Wir haben eine bat-Datei, die den Knoten verwendet, um den Winkelmesser zu starten.

Brad
Am 5. August 2014 um 9:54 Uhr schrieb "Sam Saccone" [email protected] :

Dies ist eine einfache Sache mit einfachen Pipe-Umleitungen in Unix

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

+1 zum Schließen


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -51199997.

Interessant @ brad8118 dies scheint ein Merkmal des Winkelmessers und nicht der Gurke zu sein.

Winkelmesser ruft Gurke auf und was er mit der Ausgabe macht, liegt in der Verantwortung von Winkelmesser und nicht von Gurke.

Das sind nur meine ersten Gedanken, offen für Ideen. Ich versuche nur, das Feature Creep der Gurkenbibliothek zu verhindern.

@ brad8118 Ich verwende einen Winkelmesser. Ich möchte den Quellcode nicht wirklich durcheinander bringen. Gibt es eine Möglichkeit, eine Hook- oder Support-Datei hinzuzufügen, um dies zu tun?

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

@samccone Winkelmesser verwenden native Berichterstellung hängt davon ab, welches Framework Sie verwenden. Wenn Sie Jasmine verwenden, wird die Berichterstellung in Jasmine verwendet. Wenn Sie das Gurken-Framework verwenden, verwendet es die Berichterstellung in cucumber.js, die derzeit keine Möglichkeit zum Ausgeben einer Datei hat.

@ jlin412 , ich weiß nicht, wie ich das generierte abrufen kann , ohne cucumber.js zu ändern.
Ich habe auch über die Bereinigungsfunktion in unserer JSON-Konfigurationsdatei für den Winkelmesser nachgedacht. Aber es passiert nur 1 oder 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 () {}

Sieht so aus, als wäre dies bereits in einem anderen Fork getan. nicolasenechal@b337b18

@jlin412, wenn Sie den

@ brad8118 Ich verwende die Umleitung, um die Json-Ausgabe vom Winkelmesser an eine Datei zu senden, und dann habe ich die Grunzen-Aufgabenfunktion, um das Json-Format mit Regex-Übereinstimmung herauszufiltern:

  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);
  });

Dann verwende ich Gurkensandwich zum Konvertieren in HTML (ein Java-Projekt).
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/

Ich habe die Codebasis des Gurkensandwichs geringfügig geändert, damit ich sie bei Bedarf aufrufen kann, anstatt vom Dateiereignis-Listener abhängig zu sein.

Hallo Leute, versuche ich nur, mich zurechtzufinden, wann das wieder an den Gurken-Js-Master übergeben wird? Ich brauche diese Funktionalität jetzt, aber ich bin vorsichtig, mich auf einen verzweigten Zweig zu verlassen. Könnten Sie mir eine Vorstellung davon geben, wann es in cucumber-js master verfügbar sein wird, und nur eine kurze Vorstellung davon, ob es ratsam ist, sich in der Zwischenzeit auf einen der gegabelten Zweige zu verlassen? Danke, Fraser.

+1 - Ich weiß, dass ich nicht der einzige bin, der einige verrückte Verrenkungen durchmacht, um Gurken mit Winkelmesser zu verwenden, wenn ein Flag zum Schreiben in eine Datei so hilfreich wäre. Ich verstehe nicht, warum das Schreiben in eine Datei als Feature-Creep gilt. Ist Gurke nur dazu gedacht, Entwicklern zu ermöglichen, die Qualität ihrer Arbeit visuell zu überprüfen? Sollen wir Gurke nicht im Rahmen einer größeren Testumgebung verwenden? Das kann nicht sein...

Hi,

Jeder kann mir helfen, ich habe nicht gefunden, wie man die Json-Ausgabe in eine Datei richtig konfiguriert.
Ich benutze Schluck+Winkelmesser+Gurkejs

Danke im Voraus

@cedriclombardot

Es gibt eine Möglichkeit, ein Verzeichnis für die Json-Ausgabe von Winkelmesser ab 1.5.0 auszuwählen, obwohl ich es nicht verwendet habe.
Derzeit habe ich einen Hook hinzugefügt, damit ich Pretty- und Json-Formatter zusammen verwenden kann:

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);
};

Ich habe nicht gesehen, dass resultJsonOutputFile auf magische Weise funktioniert und bereit ist
um in xml zu gehen mit: https://www.npmjs.com/package/protractor-cucumber-junit

Cédric

2015-01-02 18:34 GMT+01:00 Jason Lin [email protected] :

@cedriclombardot https://github.com/cedriclombardot

Es gibt eine Möglichkeit, ein Verzeichnis für die Json-Ausgabe vom Winkelmesser auszuwählen
1.5.0 obwohl ich es nicht benutzt habe.
Derzeit habe ich einen Hook hinzugefügt, damit ich Pretty- und Json-Formatter zusammen verwenden kann:

module.exports = Funktion JsonOutputHook() {
var Gurke = require('gurke');
var JsonFormatter = Cucumber.Listener.JsonFormatter();
var fs = erfordern('fs');

JsonFormatter.log = Funktion (json) {
fs.writeFile('test/e2e/output/cucumberReport.json', json, function (err) {
if (err) wirf err;
console.log('Speicherort der json-Datei: test/e2e/output/cucumberReport.json');
});
};

this.registerListener(JsonFormatter);
};


Antworten Sie direkt auf diese E-Mail oder zeigen Sie sie auf GitHub an
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -68544890.

+1

Könnten wir also bitte ein Update erhalten, wann dies dem Master übergeben wird? Ich verwende derzeit cucumberjs minus Winkelmesser (oder ein anderes Webtest-Framework im Selen-Stil), daher benötige ich cucumberjs, um einen formatierten Bericht zu erstellen.

Gibt es hierzu Neuigkeiten? Dies hat uns genug Probleme bereitet, um darüber nachzudenken, dieses Modul zu patchen oder parallel-gurke (die diesen Fall behandelt) zu betrachten.

gurkenjs -> webdriverio

+1

Ich folge dieser Beschreibung, um das Json-Format von cucumberjs zu speichern.

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

  1. Fügen Sie dem CucumberJS-JSON-Formatierer einen Listener hinzu und speichern Sie ihn in einer Datei
  2. protractor.conf.js fügt eine Referenz zum Hook-Listener hinzu

Es ist Arbeit

Wenn jemand die Happy Hour aufgrund von Gurken-Js-Berichten verpasst, verwenden wir Gurken-html-Berichte

  1. aktualisiere deine 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);
  });

aktualisiere deine protractor.conf.cucumberOpts
format: 'json:cucumberReports/report.json',

Dieser Thread wurde automatisch gesperrt, da nach dem Schließen in letzter Zeit keine Aktivität stattgefunden hat. Bitte öffnen Sie eine neue Ausgabe für verwandte Fehler.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen