1

最初のjunitresults.xmlをベースフォルダーにダンプし、コードを無視してそれをreportPathフォルダーに入れることを除いて、これのすべての部分が機能しています。

onComplete 関数は、node_module で使用するグローバル変数に問題なくアクセスできます。(ただし、onPrepareはそこにファイルを配置していないため、レポートパスフォルダーにテスト用のjunitresults.xmlファイルを人工的に植える必要があります)。

onPrepare の関数は、同じ onPrepare 内で設定されたグローバル変数を完全に無視しているようです。それらにアクセスするにはどうすればよいですか?アクセスするために別の非グローバル変数を作成しようとしましたが、それも無視しています。助けてください!ありがとう!

...

    multiCapabilities: [
    { browserName: 'firefox' },
    { browserName: 'chrome' }
    ],

onPrepare: function() {

    var capsPromise = browser.getCapabilities();   
    capsPromise.then(function(caps) {
        global.browserName = caps.caps_.browserName.replace(/ /g,"-");
        global.browserVersion = caps.caps_.version; 
        // browserName = global.browserName; // was just testing if not-global would work
        global.reportPath = 'c:/QA/test-results/' + global.browserName + '/';
    });

    var jasmineReporters = require('jasmine-reporters');
    jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
        consolidateAll: true,
        savePath: global.reportPath,
        filePrefix: 'junitresults'
    }));

    return global.browserName, global.browserVersion, global.reportPath;

},


onComplete: function() {

  var HTMLReport = require('jasmine-xml2html-converter');

  // Call custom report for html output
  testConfig = {
    reportTitle: 'Test Execution Report',
    outputPath: reportPath,
    seleniumServer: 'default',
    applicationUrl: browser.baseUrl,
    testBrowser: global.browserName + ' v.' + global.browserVersion
  };
  new HTMLReport().from(reportPath + 'junitresults.xml', testConfig);

  console.log("... aaaannnnd... done.");

},
4

1 に答える 1

1

jasmine レポーターの初期化をgetCapabilitiespromise 解決コールバックに入れてみてください。

onPrepare: function() {
    var capsPromise = browser.getCapabilities();   
    capsPromise.then(function(caps) {
        var browserName = caps.caps_.browserName.replace(/ /g,"-");
        var browserVersion = caps.caps_.version; 
        var reportPath = 'c:/QA/test-results/' + browserName + '/';

        var jasmineReporters = require('jasmine-reporters');
        jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({
            consolidateAll: true,
            savePath: reportPath,
            filePrefix: 'junitresults'
        }));
    });
},

また、 の代わりにglobal、グローバルに使用可能なbrowserオブジェクトにプロパティを設定することもできます。

于 2015-12-16T14:40:24.133 に答える