使用不同的参数运行相同的套房2次

时间:2015-10-16 22:58:26

标签: angularjs testing protractor

是否可以将2个命令合并为1个命令

  • protractor protractor.conf --suite create_buyer --params.buyerName=Buyer1
  • protractor protractor.conf --suite create_buyer --params.buyerName=Buyer2

  • protractor protractor.conf --suite create_buyer,create_buyer --params.suites[0].buyerName=Buyer1 --params.suites[1].buyerName=Buyer2

要使这个commad工作,我需要知道current suite index 可能吗? 可能有更好的方法!

1 个答案:

答案 0 :(得分:1)

据我所知,使用Protractor无法做到这一点。但是,如果要运行相同的套件两次,那么使用数据提供程序可以更好地处理这种情况。有很多方法可以为量角器创建数据驱动框架,但我认为最简单的方法是使用jasmine-data-provider,这是一个npm包。以下是如何做到的 -

更新conf.js文件以包含套件和参数 -

suites: {
    create_buyer: ['./firstSpec.js'] //All your specs
},

params: {
    buyerName1: '',
    buyerName2: ''
},

更新所有测试脚本文件以包含数据提供者 -

//Require the dataprovider
var dp = require('/PATH_TO/node_modules/jasmine-data-provider'); //Update your path where the jasmine-data-provider is installed

//Usage of dataprovider in your specs
var objectDataProvider = {
    'Test1': {buyerName: browser.params.buyerName1},
    'Test2': {buyerName: browser.params.buyerName2}
};

dp(objectDataProvider, function (data, description) {

    //Whole describe or anything in the dp() runs twice
    describe('First Suite Test: ', function(){

        it('First Spec', function(){ 
            element.sendKeys(data.buyerName); //usage of the data buyerNames
            //Your code for the spec
        });

        //All your specs

    });
});

现在使用命令提示符传递参数 -

protractor protractor.conf --suite create_buyer --params.buyerName1=Buyer1 --params.buyerName2=Buyer2

注意:但是,这里的问题是,您不能在一个buyerName的单一范围内运行一个套件。例如:您无法使用create_buyer一次性在套件buyerName1中运行所有规范。相反,一个规范将连续运行两次,一次使用buyerName1buyerName2,然后继续下一个规范。但我想,如果您的要求是不对一个买方使用严格的流程(即,使用create_buyer完成套件buyerName1的端到端测试,然后运行套件{使用create_buyer的{​​1}} - 这不应该是这种情况,因为自动化的拇指规则说一个测试脚本不应该依赖另一个。)

希望有所帮助