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



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

问题 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

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

问题 2:我想将用户名和密码设置为环境变量(在此处找到示例),但我不了解如何在 Appium 中正确执行此操作? 现在,用户数据存储在单独的文件中,如下所示:

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

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

非常感谢您的帮助。

您可以在文件夹中创建类似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中指定的一个脚本,用于运行你的摩卡测试。在这种情况下android6使用来自大写字母的数据.js。

可用于提供凭据的方法相同:

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

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

最新更新