量角器将数据驱动测试分成不同的规格
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了量角器将数据驱动测试分成不同的规格相关的知识,希望对你有一定的参考价值。
我的测试从excel读取数据行。每行都是一个单独的测试用例。
specs: ['SetOne.js', 'SetTwo.js'],
capabilities: {
browserName: 'chrome',
shardTestFiles: true,
maxInstances: 3,
},
现在我真的必须制作两个spec文件 - SetOne.js和SetTwo.js。两个文件都是相同的。唯一的区别是SetOne.js运行0-5行,SetTwo.js运行6-10行。
这是正确的方法吗?如果有100行并且我想在每个实例上运行10个测试用例怎么办?在这种情况下,创建10个相同的规范并指定每个规范运行的行?
答案
使用excel
是一种糟糕的方法。你可以看看数据提供者的想法。例如,我发现这个first implementation。
另一答案
您可以使用fast-csv来解析输入CSV https://www.npmjs.com/package/fast-csv
创建具有两个diff属性的JSON数组,例如(SUM,SUB)。根据D列动态创建
var csv = require("fast-csv");
var jsonStr = '{}'
var obj1 = JSON.parse(jsonStr);
csv
.fromPath("input1.csv", { comment: '#', quote: null, discardUnmappedColumns: true, delimiter: ';', ignoreEmpty: true, trim: true})
.on("data", function (data) {
if (obj1.hasOwnProperty(`${data[3]}`)) {
//add the row data to the property eg: SUB and SUB
obj1[`${data[3]}`].push(data);
}
else {
//Create a new property based on data[3] (i.e) SUB and SUM
//Creates a property if not exist eg: SUB and SUB
obj1[`${data[3]}`] = [];
obj1[`${data[3]}`].push(data);
}
})
在步骤定义中使用此JSON对象
Object.keys(obj1).forEach((value) => {
var a = `obj1.${value}`;
describe(`${value}`, function () {
it('Should .............', function () {
// test
if(value.OPR === "SUM"){
return expect(sum(value.INT_1,sum.INT_2)).to.eventually.equal(value.EXP);
}
if(value.OPR === "SUB"){
return expect(sub(value.INT_1,sum.INT_2)).to.eventually.equal(value.EXP);
}
else{
return this.skipped();
}
})
})
})
以上是关于量角器将数据驱动测试分成不同的规格的主要内容,如果未能解决你的问题,请参考以下文章