我使用赛普拉斯与Mocha Junit对Chrome中的React进行e2e测试。默认行为是每次运行我的测试时它都有一个输出结果,并且每次都会覆盖该文件。我想让它像日志一样保存这些文件。
配置位于JSON文件中,如下所示:
}
"projectId": "XXXXXX",
"reporter": "junit",
"reporterOptions": {
"mochaFile": "./cypress/results/my-test-output.xml",
"toConsole": true
}
}
我想做一些像
这样的事情var date = new Date();
"mochaFile": "./cypress/results/my-test-output${date}.xml",
显然这不是有效的JSON。我怎样才能使它每次都能生成独特的东西?
答案 0 :(得分:0)
来自文档,
结果XML文件名可以包含[hash]
另外,如果您检查junit记者source,您可以看到它是如何做到的:
...
this.writeXmlToDisk(xml, this._options.mochaFile);
...
MochaJUnitReporter.prototype.writeXmlToDisk = function(xml, filePath){
if (filePath) {
if (filePath.indexOf('[hash]') !== -1) {
filePath = filePath.replace('[hash]', md5(xml));
} ...
所以,你可以拥有:
"mochaFile": "./cypress/results/my-test-output[hash].xml"
答案 1 :(得分:0)
这里没什么可做的。正如您所看到的,您需要做的就是将JSON包装在反引号中。除了我建议您使用Date.now()
而不是new Date()
。
let date = Date.now();
let json = `{
"projectId": "XXXXXX",
"reporter": "junit",
"reporterOptions": {
"mochaFile": "./cypress/results/my-test-output-${date}.xml",
"toConsole": true
}
}`
let parsedJson = JSON.parse(json)
console.log(parsedJson.reporterOptions.mochaFile)
与哈希相比,这甚至具有历史化的优势。