Appium、Mocha、Android、JS - 在 运行 测试时是否可以通过命令行(如 android 的版本)传递设置?
Appium, Mocha, Android, JS - Is it possible to pass settings via command line (like version of android) when run tests?
我是移动测试的新手,有几个问题和疑问。
问题 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'
}
]
但我不认为在测试中存储通过是个好主意。那么如何使用这些环境变量呢?
非常感谢您的帮助。
您可以在 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
如果您使用的是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 中指定的脚本到 运行 你的摩卡测试。在这种情况下,使用来自 caps.js 的 android6
数据。
您可以使用相同的方法来提供凭据:
export login=user@gmail.com password=124356 && npm run tests
并且在您的测试中,您可以通过 process.env
阅读它
我是移动测试的新手,有几个问题和疑问。
问题 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'
}
]
但我不认为在测试中存储通过是个好主意。那么如何使用这些环境变量呢?
非常感谢您的帮助。
您可以在 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
如果您使用的是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 中指定的脚本到 运行 你的摩卡测试。在这种情况下,使用来自 caps.js 的 android6
数据。
您可以使用相同的方法来提供凭据:
export login=user@gmail.com password=124356 && npm run tests
并且在您的测试中,您可以通过 process.env