Appium,Mocha,Android,JS - 运行测试时是否可以通过命令行(如android版本)传递设置?

问题描述 投票:0回答:1

我是移动测试的新手,我有几个问题和疑问。

问题1:我有几个真正的设备,我在其上运行测试。每次在设备之间切换时,在conf文件中更改Android版本都会有点烦人。

问题1:我想在运行测试时通过Android版本。当我在Jasmine + Protractor上编写测试时,我可以在conf文件中配置它,如下所示:

switch (browser.params.env) {
    case 'case1':
      browser.params.url = 'url1';
      break;
    case 'case2':
      browser.params.url = 'url2';
      break;
    }

并运行这样的测试:

npm run test -- --browser.params.env=case1

是否有可能在Appium + Mocha中做同样的事情?我试图使用--default-capabilities标志,但这不是我需要的。

问题2:我想将用户名和密码设置为环境变量(找到一个示例here),但是我没有在Appium中正确地说明如何正确执行它?现在用户数据存储在单独的文件中,如下所示:

const users = [
  {
    id: 'someId1',
    pass: 'somePass1'
  }
]

但我不认为在测试中存储传递是个好主意。那么如何使用这些环境变量呢?

非常感谢你的帮助。

javascript android mobile mocha appium
1个回答
0
投票

您可以在caps.js文件夹中创建config等文件来存储功能矩阵:

const caps = {}

caps.android6 = {
  platformName: 'Android',
  automationName: 'UiAutomator2',
  deviceName: <device name>,
  appWaitActivity: <activity name>,
  appWaitPackage: <package name>,
  androidInstallTimeout: 90000,
  app: <path to app>
}

caps.android5 = {
  platformName: 'Android',
  platformVersion: '5.0',
  automationName: 'UiAutomator2',
  ...
}

caps.default = {...}


module.exports = caps

如果你使用wd.js,你可以按照以下方式创建驱动程序:

const path = require('path')
const caps = require(path.resolve('config','caps'))
const wd = require('wd')
const server = {host: 'localhost', port: 4723}

const capabilities = caps[
  process.env('caps') !== 'undefined'
    ? process.env['caps']
    : 'default'
]
const driver = wd.promiseChainRemote(server)
await driver.init(capabilities)

当你运行测试时,你可以像export caps=android6 && npm run tests那样做,其中tests是你在package.json中指定的脚本来运行你的mocha测试。在这种情况下,使用来自caps.js的android6数据。

您可以使用相同的方法提供凭据:

export [email protected] password=124356 && npm run tests

在你的测试中,你可以通过process.env阅读它

© www.soinside.com 2019 - 2024. All rights reserved.