gpt4 book ai didi

jasmine - 所有测试完成后如何制作分片 Protractor 测试报告(而不是每个文件)?

转载 作者:行者123 更新时间:2023-12-02 18:57:40 33 4
gpt4 key购买 nike

当分片测试(也称为并行运行测试;即:shardTestFiles: true)时,Protractor 不会在所有测试完成时报告结果,而是报告每个< em>文件完成后。

有人有解决方法吗?

我尝试过使用内联 plugin使用钩子(Hook) teardownpostTest,但都不会改变此行为(仍然根据测试文件报告)。我还尝试在 onPrepare 之外设置报告器,as suggested here ,但也没有喜悦。

我希望有一个简单的解决方案......但如果发现人们将结果放入数据库中,我不会感到惊讶......这也是一个可以接受的答案。

最佳答案

恐怕这个问题没有一个简单的答案,因为 Protractor 在使用任何自定义插件时会覆盖报告文件。但以下两个对我有用。选择最适合您的

1) 修补 Jasmine2HtmlReporter 的“index.js”以附加文件,而不是使用 PhantomJs 覆盖其文件

2) 通过从 onPrepare() 函数配置 Jasmine2HTML 报告器来生成独特的 HTML 报告,并在稍后合并所有报告

解决方案 1:Jasmine2HtmlReporter 当前的代码库 - index.js 使用两个函数 - phantomWrite()nodeWrite() 来写入数据。请参阅here

我创建了一个新函数 - appendwrite() 来附加而不是覆盖,并修改了代码来拾取此函数查看我从 protractor-jasmine2-html-reporter fork 出来的 github 代码


函数appendwrite(路径,文件名,文本){
var fs = require("fs");
var nodejs_path = require("路径");
需要(“mkdirp”)。同步(路径);//确保路径存在
var filepath = nodejs_path.join(路径, 文件名);
fs.appendFileSync(文件路径,文本)
返回;
}

并修改“node_modules/protractor-jasmine2-html-reporter/index.js”中的self.writeFile函数以获取新函数
尝试 {
追加写入(路径,文件名,文本);
//phantomWrite(路径、文件名、文本);
返回;
} catch (e) { error.push(' PhantomJs 尝试:' + e.message); }
尝试 {
节点写入(路径,文件名,文本);
返回;
} catch (f) { error.push(' NodeJS 尝试:' + f.message); }

并注释下面的代码,该代码会清理新运行的报告,以便您不会看到任何错误清理错误 - CleanUpCode

    rmdir(self.savePath);

解决方案 2:通过在 OnPrepare 函数中配置 Jasmine 报告器,根据并行实例的 sessionID 生成单独的报告

onPrepare: 函数() {
返回新的 Promise(函数(履行,拒绝){
browser.getCapability().then(函数(值){
reportName = value.get('webdriver.remote.sessionid') + '_' + value.get('browserName') + '_' + Math.floor(Math.random()*1E16);
jasmine.getEnv().addReporter(
新的 Jasmine2HtmlReporter({
保存路径: '目标/',
屏幕截图文件夹:'图像',
合并:真实,
合并所有:真实,
文件前缀:报告名称+“.html”
})
);
实现();
})
});
},

第 2 步:完成完整测试并关闭所有 Webdriver session 后,在 afterLaunch() 方法中合并跨并行实例生成的报告

afterLaunch: 函数 afterLaunch() {
var fs = require('fs');
var 输出 = '';
fs.readdirSync('目标/').forEach(函数(文件){
if(!(fs.lstatSync('目标/' + 文件).isDirectory()))
输出 = 输出 + fs.readFileSync('目标/' + 文件);
});
fs.writeFileSync('target/ConsolidatedReport.html', 输出, 'utf8');
},

您将看到生成的报告类似于下面的内容,其中还有一个 ConsolidatedReportPS:请忽略任何拼写错误和语法错误。这仅作为示例,可以自定义

enter image description here

我之前已经在 protractor-jasmine2-html-reporter doesn't consolidate results for all test when tests are shared using 'shardTestFiles': true in conf file 回答过这个问题

关于jasmine - 所有测试完成后如何制作分片 Protractor 测试报告(而不是每个文件)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39499847/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com