我的测试从excel读取数据行。每行都是一个单独的测试用例。
specs: ['SetOne.js', 'SetTwo.js'],
capabilities: {
browserName: 'chrome',
shardTestFiles: true,
maxInstances: 3,
},
现在,我实际上必须制作两个规范文件-SetOne.js和SetTwo.js。这两个文件是相同的。唯一的区别是SetOne.js运行0-5行,而SetTwo.js运行6-10行。
这是正确的方法吗?如果有100行,并且我想在每个实例上运行10个测试用例,该怎么办?在那种情况下,创建10个相同的规格并指定每个规格运行哪些行?
答案 0 :(得分:0)
使用excel
是可怕的方法。您可以看一下数据提供者的想法。例如,这first implementation是我发现的。
答案 1 :(得分:0)
您可以使用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();
}
})
})
})