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

Javascript Appium、Mocha、Android、JS—运行测试时是否可以通过命令行(如Android版本)传递设置?,javascript,android,mobile,mocha.js,appium,Javascript,Android,Mobile,Mocha.js,Appium,我对移动测试非常陌生,我有几个问题 问题1:我有几个真正的设备可以运行测试。每次我在设备之间切换时,在功能中的conf文件中更改Android版本有点烦人 问题1:我想在运行测试时通过Android版本。当我在Jasmine+量角器上编写测试时,我可以在conf文件中进行如下配置: switch (browser.params.env) { case 'case1': browser.params.url = 'url1'; break; case 'ca

我对移动测试非常陌生,我有几个问题

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

问题1:我想在运行测试时通过Android版本。当我在Jasmine+量角器上编写测试时,我可以在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
const users = [
  {
    id: 'someId1',
    pass: 'somePass1'
  }
]
在Appium+摩卡咖啡中也可以这样做吗?我试图使用--默认功能标志,但这不是我需要的

问题2:我想将username和password设置为环境变量(找到了一个示例),但我不了解如何在Appium中正确地执行它? 目前,用户数据存储在单独的文件中,如下所示:

npm run test -- --browser.params.env=case1
const users = [
  {
    id: 'someId1',
    pass: 'somePass1'
  }
]
但我不认为把通过测试存储起来是个好主意。那么如何使用这些环境变量呢


非常感谢您的帮助。

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

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
当您运行测试时,您可以像
export caps=android6&&npm run tests
那样执行,其中
tests
是您在package.json中指定的用于运行摩卡测试的脚本。在这种情况下,将使用caps.js中的
android6
数据

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

export login=user@gmail.com password=124356 && npm run tests

在您的测试中,您可以通过
process.env

您好!非常感谢你的回答。我将在几天后尝试此解决方案,并将提供反馈。谢谢,它很有效!:)唯一的区别是我将
process.env('caps')
更改为
process.env['caps']
。在
()
的例子中,我收到了一个错误,即process.env不是一个函数。太棒了,我很高兴我帮助了你,谢谢你的评论,我用正确的括号更新了答案