如何在Protractor测试用例中获取--suite参数的值?
获取Protractor中--suite参数的值
刚好做过类似的需求,分享两种靠谱的方法帮你在测试用例里拿到--suite参数的值:
方法一:解析命令行参数(简单直接)
先在你的conf.js配置文件里,利用onPrepare钩子把suite值存入Protractor的全局参数对象:
exports.config = { // 你的其他配置项(比如seleniumAddress、specs等) onPrepare: function() { // 从命令行参数列表里找到--suite开头的项 const suiteArgument = process.argv.find(arg => arg.startsWith('--suite=')); if (suiteArgument) { // 拆分出=后面的suite名称,存入browser.params供测试用例调用 browser.params.activeSuite = suiteArgument.split('=')[1]; } } };
然后在测试用例里直接调用这个全局参数:
it('Sent parameter', function() { console.log('Suite is:' + browser.params.activeSuite); // 如果需要做断言也可以这么写 // expect(browser.params.activeSuite).toBe('foo'); });
方法二:通过Protractor配置对象(更官方可靠)
Protractor本身会自动解析命令行参数并整合到配置对象里,我们可以直接获取解析后的suite值,避免自己处理字符串的麻烦:
exports.config = { // 你的其他配置项 onPrepare: async function() { // 获取处理后的完整配置对象 const processedConfig = await browser.getProcessedConfig(); // 把suite值存入全局参数 // 注意:如果指定了多个suite(比如--suite=foo,bar),processedConfig.suite会是数组 browser.params.activeSuite = Array.isArray(processedConfig.suite) ? processedConfig.suite.join(', ') : processedConfig.suite; } };
测试用例里的调用方式和方法一完全一样,执行protractor conf.js --suite=foo后,控制台就会输出Suite is:foo啦!
内容的提问来源于stack exchange,提问作者jissay
相关产品推荐
相关产品推荐

