多次运行规范

时间:2018-03-29 08:37:36

标签: jasmine protractor

    suites: {
    dev: ['./test/show-file.spec.js'],
    smoke: [
        // './test/template.spec.js',
        './test/form-validation.spec.js',
        './test/upload.spec.js',
        './test/empty-folder.spec.js',
        './test/versions.spec.js',
        './test/search.spec.js',
        './test/archive.spec.js',
        './test/move.spec.js',
        './test/copy.spec.js',
        './test/tags.spec.js',
        './test/share.spec.js',
        // './test/signup.spec.js',
        // './test/show-file.spec.js',
    ],
    recovery: [
        './test/show-file.spec.js',
        './test/show-file.spec.js',
        './test/show-file.spec.js',
        './test/show-file.spec.js',
        './test/show-file.spec.js',
        './test/show-file.spec.js',
    ]
},

以上是我的配置文件,Id喜欢运行恢复套件以确保系统恢复。所以基本相同的测试X次。 对于我不知道的原因它只运行一次。 是否有任何设置可以避免它并让它多次运行

test.conf.js --suite=recovery 

找到了解决方法

for (var i = 0; i < 10; ++i){
    describe('Suite: show', function () {
        it('may be fine', function () {
            expect(Math.random() < 0.5).toBeTruthy();
        });
    });
}

1 个答案:

答案 0 :(得分:1)

量角器将对suite执行重复性检查以删除相同的文件模式/文件名,但不要在specs上执行此操作。

简单解决方案是使用specs而不是suite。不需要额外的脚本。

compalicate 解决方案需要额外的脚本帮助。

//量角器conf.js

var params = {};   
process.argv.slice(3).forEach(function(arg, index) {
    var flag = arg.split('=')[0];
    var value = arg.split('=')[1];
    var name = flag.replace('--', '');   
    params[name] = value;   
});

console.dir(params);

var config = {   
    capabilities: {
        browserName: 'chrome'
    },   
    suites: {
        dev: ['./test/show-file.spec.js'],
        smoke: [
            './test/template.spec.js',
            // ...
        ],
        recovery: [
            './test/show-file.spec.js'
        ]
    },   
    onPrepare: function() {}, 
    // ...
};

if (params['repeat.suites'] && config.suites &&
    Object.keys(config.suites).length > 0) {

    var repeat = (params['repeat.times'] || 1) * 1;
    var specs = [];   
    params['repeat.suites'].split(',').forEach(function(suiteName) {
        suiteName = suiteName.trim();
        if (config.suites[suiteName]) {
            specs = specs.concat(config.suites[suiteName]);
        }
    });

    var allSpecs = [];   
    while (repeat > 0) {
        allSpecs = allSpecs.concat(specs);
        repeat--;
    }  
    config.specs = allSpecs;
}

console.dir(config);   
exports.config = config;

//量角器cmd线:
protractor conf.js --repeat.suites="smoke,recovery" --repeat.times=2

注意您可以继续使用其他支持量角器的cli选项。只有当您想重复执行某个套件时,才应使用--suite,而是使用--repeat.suite