是否可以将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
可能吗?
可能有更好的方法!
答案 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
中运行所有规范。相反,一个规范将连续运行两次,一次使用buyerName1
和buyerName2
,然后继续下一个规范。但我想,如果您的要求是不对一个买方使用严格的流程(即,使用create_buyer
完成套件buyerName1
的端到端测试,然后运行套件{使用create_buyer
的{1}} - 这不应该是这种情况,因为自动化的拇指规则说一个测试脚本不应该依赖另一个。)
希望有所帮助