为什么我的HTML测试报告总是落后一个XML文件?
Why is my HTML test report always one XML file behind?
我的 protractor
配置文件中的这段代码完美运行...除了 onComplete 中的 html
文件创建始终使用 中的 junitresults xml
文件previous 测试 运行,而不是在同一配置文件的 onPrepare 函数中创建的 xml 文件。因此 html 页面总是显示测试结果 运行 比 html 页面上显示的时间戳声称的结果晚 运行。
一个简单的例子是,如果我从 test-results 文件夹中的先前测试中没有 xml 文件开始,html 生成器会发现 no xml 文件来构建 html 文件,因此不会生成 html 文件。但是 new xml 文件确实显示仍然被创建,放入文件夹,并完全被忽略......直到下一个测试 运行.
你能帮我测试生成一个 xml 文件然后使用 that 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.");
},
这一切都与时机有关。 jasmine-reporters
中的 JUnitXmlReporter
将输出写入 jasmineDone
回调 (source) 上的 XML 文件,这发生在 onComplete
.[= 之后25=]
首先要尝试的是切换到 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.");
}
});
另一种选择是直接生成 HTML 报告,例如 protractor-jasmine2-html-reporter
.
我的 protractor
配置文件中的这段代码完美运行...除了 onComplete 中的 html
文件创建始终使用 中的 junitresults xml
文件previous 测试 运行,而不是在同一配置文件的 onPrepare 函数中创建的 xml 文件。因此 html 页面总是显示测试结果 运行 比 html 页面上显示的时间戳声称的结果晚 运行。
一个简单的例子是,如果我从 test-results 文件夹中的先前测试中没有 xml 文件开始,html 生成器会发现 no xml 文件来构建 html 文件,因此不会生成 html 文件。但是 new xml 文件确实显示仍然被创建,放入文件夹,并完全被忽略......直到下一个测试 运行.
你能帮我测试生成一个 xml 文件然后使用 that 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.");
},
这一切都与时机有关。 jasmine-reporters
中的 JUnitXmlReporter
将输出写入 jasmineDone
回调 (source) 上的 XML 文件,这发生在 onComplete
.[= 之后25=]
首先要尝试的是切换到 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.");
}
});
另一种选择是直接生成 HTML 报告,例如 protractor-jasmine2-html-reporter
.