为什么我的HTML测试报告总是落后于一个XML文件?

时间:2016-01-12 14:51:19

标签: angularjs jasmine automated-tests protractor jasmine2.0

我的protractor配置文件中的此代码完美无缺...除了onComplete中的html文件创建始终使用上一个xml文件>测试运行,而不是在相同配置文件的onPrepare函数中创建的xml文件。因此,html页面始终显示测试结果,这是在html页面声明的时间戳背后显示的。

一个简单的例子是,如果我从test-results文件夹中的先前测试开始没有xml文件,html生成器根本找到 no xml文件来构建一个html文件,并且因此不会生成任何html文件。但 new xml文件确实显示仍然被创建,放入文件夹,并完全被忽略......直到下一次测试运行。

你能帮助我测试生成一个xml文件,然后使用那个 xml文件生成html文件吗?

谢谢!

onPrepare: function() {
    var capsPromise = browser.getCapabilities();   
    capsPromise.then(function(caps) {
        browser.browserName = caps.caps_.browserName.replace(/ /g,"-");
        browser.browserVersion = caps.caps_.version; 
        browserName = browser.browserName;
        browser.reportPath = 'c:/QA/test-results/' + browser.browserName + '/';
    }). then(function(caps) {
            var jasmineReporters = require('jasmine-reporters');
            jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter({    
                consolidateAll: true,
                savePath: 'c:/QA/test-results/' + browser.browserName + '/',
                filePrefix: 'junitresults'
        }));
    });
    return browser.browserName, browser.browserVersion, browser.reportPath;
},

onComplete: function() {
  var HTMLReport = require('jasmine-xml2html-converter');
  // Call custom report for html output
  testConfig = {
    reportTitle: 'Test Execution Report',
    outputPath: browser.reportPath,
    seleniumServer: 'default',
    applicationUrl: browser.baseUrl,
    testBrowser: browser.browserName + ' v.' + browser.browserVersion
  };
  new HTMLReport().from(browser.reportPath + 'junitresults.xml', testConfig);
  console.log("... aaaannnnd... done.");
},

1 个答案:

答案 0 :(得分:5)

这就是时机。来自JUnitXmlReporter的{​​{1}}将输出写入jasmine-reporters回调(source)上的XML文件,该文件发生在jasmineDone之后。

首先要尝试切换到onCompleteafterLaunch而不是onCleanup。请注意,onComplete对象在这些方法中不可用,您需要其他方法来共享回调之间的变量。另见:

您还可以添加custom reporter,提供browser回调:

jasmineDone

另一种选择是直接通过protractor-jasmine2-html-reporter生成HTML报告。