Cucumber-js: الإبلاغ - إخراج إلى ملف

تم إنشاؤها على ٢ أكتوبر ٢٠١٢  ·  29تعليقات  ·  مصدر: cucumber/cucumber-js

لا يمكن حاليًا تحديد ملف "إخراج" كوسيطة CLI لحفظ التقارير. يبدو أن منسق JSON يكتب مباشرة إلى STDOUT ، والتي يمكن أن تكون مشكلة عند تصحيح الأخطاء (باستخدام console.log) أو إذا فشل البرنامج ، ينتج JSON غير صالح.

سيكون من المرغوب فيه إذا كان هذا يعمل مثل الخيار في الياقوت ، مما يسمح بتنسيقات متعددة المحفوظة لفصل ملفات الإخراج.

التعليق الأكثر فائدة

تضمين التغريدة

هناك طريقة لتحديد دليل لإخراج json من منقلة من 1.5.0 على الرغم من أنني لم أستخدمها.
حاليًا ، أضفت خطافًا حتى أتمكن من استخدام منسق جميل وجسون معًا:

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 = {
كتابة: دالة (سلسلة) {
self.log (سلسلة نصية) ؛
fs.writeFileSync ('path \ test_results.json'، string) ؛ // المضافة
}
} ؛

يعد هذا أمرًا بسيطًا للقيام به مع عمليات إعادة توجيه الأنابيب البسيطة في نظامي Unix و bash

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

+1 للإغلاق

لا يمكننا توجيهها. نحن نستخدم ملف التكوين الخاص بالمنقلة لتعيين cucumberjs
والخيارات

الخيار الخيارات: {
التنسيق: "JSON" ،
العلامات: " testRun "
}

لدينا ملف بات يستخدم العقدة لبدء المنقلة.

براد
في 5 أغسطس 2014 ، الساعة 9:54 صباحًا ، كتب "Sam Saccone" [email protected] :

يعد هذا أمرًا بسيطًا للقيام به مع عمليات إعادة توجيه الأنبوب البسيطة في نظام التشغيل Unix

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

samccone منقلة استخدام التقارير الأصلية يعتمد على إطار العمل الذي تستخدمه. إذا كنت تستخدم Jasmine ، فستستخدم التقارير في Jasmine. إذا كنت تستخدم إطار عمل الخيار ، فسيستخدم إعداد التقارير في cucumber.js ، والذي لا يوجد لديه حاليًا طريقة لإخراج ملف.

@ 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 () {}

يبدو أن هذا تم بالفعل في مفترق آخر. nicolassenechal @ b337b18

@ jlin412 عندما كنت لطيف ولصق json. ماذا تفعل به؟ هل تقوم بتحويله إلى html؟

@ brad8118 أستخدم إعادة التوجيه لإرسال إخراج json إلى ملف من المنقلة ثم لدي وظيفة مهمة grunt لتصفية تنسيق json باستخدام تطابق regex:

  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 (مشروع جافا).
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/

لقد أجريت تعديلًا طفيفًا على قاعدة كود ساندويتش الخيار حتى أتمكن من تسميتها عند الطلب بدلاً من الاعتماد على مستمع حدث الملف.

مرحبًا يا رفاق ، فقط أحاول أن أثير رأسي عندما يتم الالتزام بذلك إلى Cucumber-js Master؟ أحتاج إلى هذه الوظيفة الآن ، لكني أخشى الاعتماد على فرع متشعب. هل يمكن أن تعطيني فكرة عن موعد توفره في cucumber-js master وفكرة سريعة عما إذا كان من الحكمة الاعتماد على أحد الفروع المتشعبة في هذه الأثناء؟ شكرا فريزر.

+1 - أعلم أنني لست وحدي في إجراء بعض الالتواءات المجنونة لاستخدام الخيار مع المنقلة عندما يكون كتابة العلم في الملف مفيدًا جدًا. لا أفهم سبب اعتبار الكتابة إلى ملف زحفًا للميزات. هل الخيار مخصص فقط للسماح للمطورين بفحص جودة عملهم بصريًا؟ أليس من المفترض أن نستخدم الخيار في نطاق بيئة اختبار أكبر؟ هذا لا يمكن أن يكون كذلك ...

أهلا،

يمكن لأي شخص مساعدتي ، لم أجد كيفية تكوين إخراج json بشكل صحيح في ملف.
أنا استخدم بلع + منقلة + خيار

شكرا لك مقدما

تضمين التغريدة

هناك طريقة لتحديد دليل لإخراج json من منقلة من 1.5.0 على الرغم من أنني لم أستخدمها.
حاليًا ، أضفت خطافًا حتى أتمكن من استخدام منسق جميل وجسون معًا:

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-04-02 18:34 بتوقيت جرينتش + 01: 00 جيسون لين [email protected] :

cedriclombardot https://github.com/cedriclombardot

توجد طريقة لتحديد دليل لإخراج json من منقلة منه
1.5.0 على الرغم من أنني لم أستخدمه.
حاليًا ، أضفت خطافًا حتى أتمكن من استخدام منسق جميل وجسون معًا:

module.exports = الوظيفة JsonOutputHook () {
var Cucumber = يتطلب ('cucumber') ؛
var JsonFormatter = Cucumber.Listener.JsonFormatter () ،
var fs = تتطلب ('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

لذا هل يمكن أن نحصل على تحديث حول متى سيتم الالتزام بإتقان هذا؟ أنا أستخدم حاليًا cucumberjs ناقص المنقلة (أو أي إطار عمل آخر لاختبار الويب على غرار السيلينيوم) لذلك أحتاج إلى cucumberjs لإنتاج تقرير منسق.

أي تحديث على هذا؟ لقد تسبب هذا في مشاكل كافية للتفكير في تصحيح هذه الوحدة أو النظر في الخيار الموازي (الذي يتعامل مع هذه الحالة).

cucumberjs -> webdriverio

+1

أتبع هذا الوصف لحفظ تنسيق cucumberjs json.

https://github.com/mrooding/gulp-protractor-cucumber-html-report#saving -cucumberjs-json-to-disk-when-using-المنقلة

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

قم بتحديث المنقلة الخاصة بك
format: 'json:cucumberReports/report.json',

تم قفل سلسلة الرسائل هذه تلقائيًا نظرًا لعدم وجود أي نشاط حديث بعد إغلاقه. الرجاء فتح قضية جديدة للأخطاء ذات الصلة.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات