此代码在我的 protractor
配置文件完美运行...除了 html
onComplete 中的文件创建始终使用 junitresult xml
文件,而不是在同一配置文件的 onPrepare 函数中创建的 xml 文件。所以 html 页面总是显示测试结果,它比 html 页面上显示的时间戳声称的时间晚。
一个简单的例子是,如果我从 test-results 文件夹中的先前测试中没有 xml 文件开始,则 html 生成器根本找不到用于构建 html 文件的 xml 文件,因此不会生成 html 文件。但是新的 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.");
},
最佳答案
这都是关于时机的。 JUnitXmlReporter
来自 jasmine-reporters
将输出写入 jasmineDone
上的 XML 文件回调 ( source ),发生在 onComplete
之后.
首先要尝试的应该是切换到 afterLaunch
或 onCleanup
而不是 onComplete
.请注意 browser
对象在这些方法中不可用,您需要其他方式在回调之间共享变量。另见:
您还可以添加 custom reporter ,提供
jasmineDone
打回来:jasmine.getEnv().addReporter({
jasmineDone: 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.");
}
});
另一种选择是直接通过例如
protractor-jasmine2-html-reporter
生成 HTML 报告。 .
关于angularjs - 为什么我的 HTML 测试报告总是落后一个 XML 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34746778/