量角器重复规格

时间:2016-01-15 13:10:16

标签: javascript angularjs testing protractor bdd

我有这样的案例

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',
    specs: [
        'test/scenarios/user/login.js',
        'test/scenarios/user/choose_user_1.js',
        'test/scenarios/user/change_user.js',
        'test/scenarios/user/choose_user_2.js',
        'test/scenarios/user/change_user.js',
        'test/scenarios/user/choose_user_3.js',
        'test/scenarios/user/logout.js'
    ]
}

但是量角器不会多次重复使用change_user.js .. 我必须创建change_user_1.js和change_user_2.js以获得我想要的东西..有没有办法停用这种行为,或者我应该以不同的方式进行测试?

最好的问候

1 个答案:

答案 0 :(得分:1)

据我所知,你不能两次调用相同的脚本。我们有类似的问题,这就是我要做的修复 - 使用jasmine-data-provider,创建单独的套件而不是脚本,并使用数据提供程序循环它们。以下是我将遵循的步骤 -

  1. 安装jasmine-data-provider npm包。
  2. 创建两个describe套件,一个用于choose_user,另一个用于change_user
  3. 使用jasmine-data-provider将多个数据传递到这些描述套件。
  4. 每次choose_user - describe运行时,change_user - describe也会在其旁边运行。
  5. 这是一个示例代码 -

    var dp = require('../node_modules/jasmine-data-provider'); //Install the npm package and provide its path
    
    //Data provider object to store data that script uses
    var objectDataProvider = {
        'Test1': {user1: 'user_1'},
        'Test2': {user1: 'user_2'},
        'Test3': {user1: 'user_3'},
    };
    
    //Jasmine Data Provider function automatically loops through the tests - Test1, Test2, Test3
    dp(objectDataProvider, function (data) {
    
        describe('choose_user Test:', function(){
            //Choose User specs that's applicable for one user
            //To use the objectDataProvider data use - data.user1 all the time
        });
    
        describe('change_user Test:', function(){
            //Change User specs that's applicable for one user
        });
    
    });
    

    此脚本应运行choose_userchange_user规范3次,然后您可以继续执行管道中的其余脚本。

    希望它有所帮助。