量角器将数据驱动的测试分为不同的规格

时间:2018-10-19 17:14:22

标签: protractor

我的测试从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个相同的规格并指定每个规格运行哪些行?

2 个答案:

答案 0 :(得分:0)

使用excel是可怕的方法。您可以看一下数据提供者的想法。例如,这first implementation是我发现的。

答案 1 :(得分:0)

您可以使用fast-csv解析输入的CSV https://www.npmjs.com/package/fast-csv

enter image description here

创建带有两个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();
           }

        })
    })

})