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

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

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();
           }

        })
    })

})

以上是关于量角器将数据驱动测试分成不同的规格的主要内容,如果未能解决你的问题,请参考以下文章

量角器测试在第二次运行中因ng-reflect属性而失败

软件测试方法

量角器页面对象继承

如何不忘记再次将量角器转换为角度同步?

SQL求助,一个字段的内容分成两个字段!

从量角器中的json文件中获取数据