Cucumber-js: रिपोर्टिंग - फ़ाइल में आउटपुट

को निर्मित 2 अक्तू॰ 2012  ·  29टिप्पणियाँ  ·  स्रोत: cucumber/cucumber-js

रिपोर्ट सहेजने के लिए सीएलआई तर्क के रूप में "आउटपुट" फ़ाइल निर्दिष्ट करना वर्तमान में संभव नहीं है। ऐसा लगता है कि JSON फॉर्मेटर सीधे STDOUT को लिखता है, जो डिबगिंग (console.log का उपयोग करके) या प्रोग्राम विफल होने पर अमान्य JSON उत्पन्न करते समय एक समस्या हो सकती है।

यह वांछनीय होगा अगर यह रूबी में ककड़ी की तरह काम करता है, जिससे आउटपुट फाइलों को अलग करने के लिए कई प्रारूपों को सहेजा जाता है।

सबसे उपयोगी टिप्पणी

@cedriclombardot

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

HI मैं मैन्युअल रूप से JSON परिणामों की सामग्री को Cucumber-json2report-master की डेटा निर्देशिका में Cucumber.json फ़ाइल में कॉपी और पेस्ट कर रहा हूं, जो मुझे रन के कुछ अच्छे परिणाम प्राप्त करने की अनुमति देता है, लेकिन यह बहुत अच्छा होगा यदि ककड़ी.जेएस फ़ाइल को उस निर्देशिका में रख सकता है, इस प्रकार मैन्युअल चरण को समाप्त कर सकता है।

मैं वास्तव में संस्करण को हैक नहीं करना चाहता या एक कांटा बनाना नहीं चाहता। सुझाव?

इस पर किसी भी अद्यतन?

@letshaveyer यह आपके लिए एक उपयोगी सुविधा की तरह लगता है। आप पुल अनुरोध क्यों नहीं भेजते?

जब तक यह काम नहीं कर रहा है तब तक आप json_formatter.js को संशोधित कर सकते हैं। यह हैक है लेकिन बहुत आसान है कि हर बार एक पेस्ट को कॉपी करना। हम फ़ाइल नाम में टाइम स्टैम्प भी जोड़ रहे हैं।

किसी फ़ाइल में लिखने के लिए फ़ॉर्मेटरआईओ ऑब्जेक्ट को भी बदलें

वर फ़ॉर्मेटरआईओ = {
लिखें: फ़ंक्शन (स्ट्रिंग) {
स्वयं लॉग (स्ट्रिंग);
fs.writeFileSync('path\test_results.json', string); // जोड़ा गया
}
};

यूनिक्स और बैश में साधारण पाइप रीडायरेक्ट के साथ यह एक साधारण बात है

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

+1 बंद करने के लिए

हम इसे पाइप नहीं कर सकते। हम Cucumberjs सेट करने के लिए प्रोट्रैक्टर की कॉन्फिग फाइल का उपयोग कर रहे हैं
विकल्प

ककड़ी विकल्प: {
प्रारूप: 'JSON',
टैग: ' @testRun '
}

हमारे पास एक बैट फ़ाइल है जो चांदा शुरू करने के लिए नोड का उपयोग करती है।

चपटी कील
5 अगस्त 2014 को सुबह 9:54 बजे, "सैम सैकोन" नोटिफिकेशन @github.com ने लिखा:

यूनिक्स में साधारण पाइप पुनर्निर्देशन के साथ यह एक साधारण बात है

ककड़ी-जेएस --format=json | टी वाह।जेसन

+1 बंद करने के लिए

-
इस ईमेल का सीधे उत्तर दें या इसे GitHub पर देखें
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -51199997।

दिलचस्प @ brad8118 ऐसा लगता है जैसे यह

प्रोट्रैक्टर ककड़ी का आह्वान कर रहा है और यह आउटपुट के साथ जो करता है वह खीरा नहीं बल्कि प्रोट्रैक्टर की जिम्मेदारी है।

वे मेरे शुरुआती विचार हैं, विचारों के लिए खुले हैं। मैं सिर्फ ककड़ी lib के फीचर रेंगने को रोकने की कोशिश कर रहा हूं।

@ brad8118 मैं चांदा का उपयोग कर रहा हूँ। मैं वास्तव में स्रोत कोड को गड़बड़ाना नहीं चाहता। क्या ऐसा कोई तरीका है जिससे मैं ऐसा करने के लिए एक हुक या समर्थन फ़ाइल जोड़ सकता हूं?

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

@samccone प्रोट्रैक्टर देशी रिपोर्टिंग का उपयोग इस बात पर निर्भर करता है कि आप किस ढांचे का उपयोग कर रहे हैं। यदि आप जैस्मीन का उपयोग कर रहे हैं, तो यह जैस्मीन में रिपोर्टिंग का उपयोग करेगी। यदि आप ककड़ी ढांचे का उपयोग कर रहे हैं, तो यह ककड़ी.जेएस में रिपोर्टिंग का उपयोग करेगा, जिसके पास वर्तमान में फ़ाइल को आउटपुट करने का कोई तरीका नहीं है।

@ jlin412 , मुझे नहीं पता कि ककड़ी को बदले बिना उत्पन्न होने वाले
मैंने अपने प्रोट्रैक्टर जोंस कॉन्फिग फाइल में क्लीनअप फंक्शन के बारे में भी सोचा है। लेकिन यह केवल 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 जब आप प्यारा और

@ brad8118 मैं जेसन आउटपुट भेजने के लिए पुनर्निर्देशन का उपयोग ग्रंट टास्क फ़ंक्शन है:

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

फिर मैं एचटीएमएल (एक जावा प्रोजेक्ट) में कनवर्ट करने के लिए ककड़ी सैंडविच का उपयोग करता हूं।
http://www.farooqyousuf.net/2013/12/generating-reports-with-cucumber-sandwich/

मैंने ककड़ी सैंडविच कोड बेस में थोड़ा सा संशोधन किया है ताकि मैं इसे फ़ाइल ईवेंट श्रोता के आधार पर मांग पर कॉल कर सकूं।

हाय दोस्तों, बस मेरे सिर को चारों ओर ले जाने की कोशिश कर रहा हूं जब यह ककड़ी-जेएस मास्टर को वापस कर दिया जाएगा? मुझे अब इस कार्यक्षमता की आवश्यकता है, लेकिन मैं एक कांटेदार शाखा पर भरोसा करने से सावधान हूं। क्या आप मुझे इस बात का अंदाजा दे सकते हैं कि यह ककड़ी-जेएस मास्टर में कब उपलब्ध होगा और क्या इस बीच कांटेदार शाखाओं में से किसी एक पर भरोसा करना बुद्धिमानी है? धन्यवाद, फ्रेजर।

+1 - मुझे पता है कि मैं कुछ पागल अंतर्विरोधों के माध्यम से प्रोट्रैक्टर के साथ ककड़ी का उपयोग करने में अकेला नहीं हूं जब फ़ाइल में लिखने के लिए ध्वज बहुत उपयोगी होगा। मुझे समझ में नहीं आता कि फाइल को लिखना फीचर रेंगना क्यों माना जाता है। क्या ककड़ी का उद्देश्य केवल डेवलपर्स को अपने काम की गुणवत्ता का निरीक्षण करने की अनुमति देना है? क्या हमें बड़े परीक्षण वातावरण के दायरे में खीरे का उपयोग नहीं करना चाहिए? ऐसा नहीं हो सकता...

नमस्ते,

कोई भी मेरी मदद कर सकता है, मुझे नहीं मिला कि फ़ाइल में ठीक से जेसन आउटपुट को कैसे कॉन्फ़िगर किया जाए।
मैं घूंट+प्रोट्रैक्टर+खीरा का उपयोग करता हूँ

अग्रिम में धन्यवाद

@cedriclombardot

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 नहीं देखा है जो जादुई और तैयार काम करता है
एक्सएमएल में जाने के लिए: https://www.npmjs.com/package/protractor-cucumber-junit

सिडरिक

2015-01-02 18:34 जीएमटी+01:00 जेसन लिन नोटिफिकेशन @github.com :

@cedriclombardot https://github.com/cedriclombardot

प्रोट्रैक्टर से जेसन आउटपुट के लिए निर्देशिका का चयन करने का एक तरीका है
1.5.0 हालांकि मैंने इसका उपयोग नहीं किया है।
वर्तमान में, मैंने एक हुक जोड़ा है ताकि मैं एक साथ सुंदर और जोंस फॉर्मेटर का उपयोग कर सकूं:

मॉड्यूल.एक्सपोर्ट्स = फ़ंक्शन JsonOutputHook () {
वर ककड़ी = आवश्यकता ('खीरा');
वर JsonFormatter = Cucumber.Listener.JsonFormatter ();
वर एफएस = आवश्यकता ('एफएस');

JsonFormatter.log = फ़ंक्शन (जेसन) {
fs.writeFile('test/e2e/output/cucumberReport.json', json, function (err) {
अगर (गलती) गलती फेंक;
कंसोल.लॉग ('जेसन फाइल लोकेशन: टेस्ट/ई2ई/आउटपुट/ककड़ी रिपोर्ट.जेसन');
});
};

this.registerListener (JsonFormatter);
};

-
इस ईमेल का सीधे उत्तर दें या इसे GitHub पर देखें
https://github.com/cucumber/cucumber-js/issues/90#issuecomment -68544890।

+1

तो क्या हम इस बारे में अपडेट प्राप्त कर सकते हैं कि यह मास्टर के लिए कब प्रतिबद्ध होगा? मैं वर्तमान में ककड़ीज माइनस प्रोट्रैक्टर (या कोई अन्य सेलेनियम स्टाइल वेब टेस्ट फ्रेमवर्क) का उपयोग कर रहा हूं, इसलिए मुझे एक स्वरूपित रिपोर्ट तैयार करने के लिए ककड़ीज की आवश्यकता है।

इस पर किसी भी अद्यतन? इसने हमें इस मॉड्यूल को पैच करने या समानांतर-ककड़ी (जो इस मामले को संभालता है) को देखने के बारे में सोचने के लिए पर्याप्त मुद्दों का कारण बना दिया है।

ककड़ीज -> वेबड्राइवरियो

+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 हुक श्रोता के लिए एक संदर्भ जोड़ें

यह काम है

अगर किसी को ककड़ी जेएस रिपोर्ट के कारण खुश घंटे याद आ रहे हैं, तो हम ककड़ी-एचटीएमएल-रिपोर्ट का उपयोग कर रहे हैं

  1. अपने हुक अपडेट करें।जेएस
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 रेटिंग्स