gaia的puppet测试自动化客户端

gaiatest-v1.4的Python项目详细描述


简介:GaiateST是一个基于[Marionette](https://developer.mozilla.org/en-us/docs/Marionette)的Python包。它是专门为编写针对
[gaia](https://github.com/mozilla-b2g/gaia)的测试而设计的。


可以
[成功连接到](https://developer.mozilla.org/en-us/docs/mariotte/connecting_-to_-b2g)。


如果您只想运行测试而不进一步开发gaia ui测试,则安装
==





轻松安装gaiatest

您现在可以跳到"风险"部分。另一方面,如果您想修改gaia ui测试,请执行以下操作:


在运行
"python setup.py develop"之前,请考虑设置虚拟环境。这是完全可选的。


virtual env env-name
source env-name/bin/activate

做:

cd gaia/tests/python/gaia ui tests
python setup.py develop

风险
=


请访问
[此页](https://developer.mozilla.org/en-us/docs/gaia-u test-runner)
了解并确认运行这些测试时涉及的风险。
要修改testvars.json文件(请参阅下面的**测试变量**部分
),显示您对风险的确认,以运行测试。


对于完整的
用法详细信息,请运行"gcli--help",对于特定命令的帮助,请使用"gcli
<;command>;--help"。

setsetting screen.brightness 1
$gcli connectwifi mozillaguest
$gcli launchapp settings
````


运行测试
==


要使用gaia测试运行测试,您的命令行将稍有不同
。一般格式是:

gaiatest[选项]/path/to/test_foo.py


选项:

--emulator arm--homedir/path/to/emulator:使用这些选项
让木偶为您启动一个模拟器,在其中运行测试
--address<;host>;:<;port>;使用此选项可在您自己手动启动的模拟器、真实设备或B2G桌面构建上运行测试。如果您使用了如下所述的端口转发,
您将指定--address localhost:2828
--testvars=(请参阅下面的测试变量部分)
--在测试之间重新启动目标实例。此选项将删除
/data/local/indexeddb和/data/b2g/mozilla文件夹,并将
设备还原到公共状态
--您可以在运行测试时收集功耗数据
(请参阅https://developer.mozilla.org/en-us/docs/mozilla/firefox-os/platform/automated-testing/gaia-ui-tests/gaia-ui-tests-run-tests-collecting-power-draw-data)设置默认超时值(页面加载超时30秒,搜索超时
10秒,以及(脚本超时时间为10秒)到一个公共指定值


在设备上测试
最有效的方法是获取一个夜间"eng"版本,比如
[这一个用于unagi](https://pvtbuilds.mozilla.org/pub/mozilla.org/b2g/nightly/mozilla-b2g18-unagi-eng/latest/)
(当前需要一个mozilla ldap登录)。将其闪存到您的设备。

您不应在设备上手动启用远程调试,因为
将有相互竞争的调试器。请参见
[bug 764913](https://bugzilla.mozilla.org/show_bug.cgi?id=764913)。

您可以通过运行以下命令来完成此操作:

adb forward tcp:2828 tcp:2828

或者,它可以作为
[android sdk]的一部分(http://developer.android.com/sdk/index.html)下载。

桌面版本
==br/>==br/>

您可以从
[此位置](http://ftp.mozilla.org/pub/mozilla.org/b2g/nightly/latest mozilla central)下载桌面客户端的最新版本,
,但请确保为您的操作系统下载适当的文件。

***linux(32位)**:b2g-[版本].multi.linux-i686.tar.bz2
**linux(64位)**:b2g-[版本].multi.linux-x86\u64.tar.bz2
**mac**:b2g-[版本].multi.mac64.dmg
**windows**:b2g-[版本].multi.win32.zip

下载后,您需要将内容提取到本地文件夹中。
$b2g\\u home指
文档其余部分的本地文件夹位置。

这有助于确保所有测试都在干净的状态下运行。
但是,如果您还打算手动启动桌面构建并与之交互,我们建议您制作一个默认配置文件的副本,并将副本用于您的测试。默认配置文件的位置是$B2G\\u home/gaia/profile。

要运行测试,使用以下命令:

gaiatest--restart--type=b2g--app=b2gdesktop\
--binary=$b2g_home/b2g bin\
--profile=$b2g_home/gaia/profile\
--testvars=path/to/filename.json\
gaia/tests/python/gaia ui tests/gaiatest/tests/manifest.ini\

然后您应该开始看到测试正在运行。接下来的两部分分别提供了`--type`选项中使用的测试类型和`--testvars`选项的测试变量的详细信息。


多种类型,有些类型意味着其他类型,有些类型是互斥的-例如,测试不能同时是"在线"和"离线"
,但定义为"局域网"的测试是"在线"的。请注意,尽管有这些
规则,但对类型的检查没有错误,因此在分配
规则时必须小心。默认类型在清单文件的[default]部分中设置,并由include引用的清单文件继承。

以及何时使用:

*天线-这些测试需要连接天线(耳机)。
*B2G-这意味着测试是B2G(Firefox OS)测试。所有测试必须包括
这种类型。
*蓝牙-要求提供蓝牙。
*摄像头-这些测试需要使用摄像头。
*运营商-需要具有运营商连接的活动SIM卡。
*闪存-这些测试需要使用闪存。
*LAN-本地区域这些测试需要连接(不是单元数据)(请参见下面的
注意)。
*脱机-特别是不需要联机连接。
*联机-需要某种联机连接(LAN或运营商)。
*QEMU-这些测试需要运行Firefox OS模拟器。
*SDCard-A存储设备必须是现在。
*WiFi-这意味着需要WiFi连接。

您可能认为只有WiFi或蜂窝数据,以及为什么需要
"LAN"测试类型。嗯,这些测试不仅在移动设备上运行…我们还可以在具有以太网端口的单板计算机
[panda board s](https://en.wikipedia.org/wiki/panda_board)和共享主机连接的桌面构建上运行。因此,我们需要"lan"来指示不是cell
数据的连接。例如,在使用online/lan/carrier时,请查看
浏览器测试。


test variables
例如,在gaia ui测试中,这些
变量可以是您的私人登录凭据、电话号码或
wifi连接的详细信息。

要使用它,将
`gaia/tests/python/gaia ui tests/gaiatest/testvars_template.json`复制到不同的
文件名中,但将其添加到.gitignore中,这样就不会将其签入存储库。

运行测试时添加参数:
--testvars=(filename).json


变量:

`"carrier":{}(dict)`测试电话的载波信息。其中包含SIM卡的电话号码、国家/地区和网络。

``json
"运营商":{
"电话号码":",
"国家/地区":",
"network":"
}
```
`"imei":""(string)`测试电话的12位imei码。
`"remote_phone_number":""(string)`设备在测试期间可以呼叫的电话号码(尽量不要成为麻烦!)。请在号码前加上"+"和
国际拨号代码。
`"WiFi":{}{(dict)`这是WiFi连接的设置。目前
这支持wpa/wep/etc。您可以通过执行以下操作来添加wifi网络
(请记住将"keymanagement"和"wep"替换为您的网络
支持的值):

``json
"wifi":{
"ssid":"mynetwork",
"keymanagement":"wep",
"wep":"mypassword"
}
```

```json
"wifi":{
"ssid":"mynetwork",
"keymanagement":"wpa-psk",
"psk":"mypassword"
}
````
"注意:由于[bug 775499]的原因(http://bugzil.la/775499),此时无法通过
wpa-eap进行WiFi连接。

`"email":{}(dict)`电子邮件测试使用的电子邮件登录信息。它可以包含不同类型的电子邮件帐户:


gmail:
``json
"gmail":{
"name":",
"email":",
"password":"
}
`````

"或不同的电子邮件协议:
``json
"imap":{
"name":",
"email":",
"password":",
"imap_hostname":",
"imap_name":",
"imap_port":",
"smtp_hostname":",
"smtp_name":",
"smtp_port":"
}
````
或:
``json
"active sync":{
"name":",
"email":",
"password":",
"active sync_hostname":",
"活动同步用户名":"
}
````
`"设置":{}(dict)`覆盖GAIA默认设置的自定义设置。
这些设置将在每次测试运行前设置,但不是必需的。
```json
"设置":{
"<;设置>;":<;值>;
}"
```
在这种情况下,您可能需要使用testvars.json中的设置强制时区与所需时区匹配,该设置将在测试设置期间进行设置:

``json
"settings":{
"time.timezone":<;value>;,
"time.timezone.user selected":<;value>;
}"
```


`"prefs":{}(dict)`覆盖壁虎默认首选项的自定义首选项。
这些将在每次测试运行之前设置,但不是必需的。
``json
"prefs":{
"<;name>;":<;value>;
}"
```


在访问
[风险页面](https://developer.mozilla.org/en-us/docs/gaia_test戋runner)以了解和确认运行这些测试时涉及的风险之后,不要忘记在testvars文件中确认风险,否则,
测试将不会运行。


测试数据先决条件
==

==


有时,测试需要硬件上的数据,而这些数据在
测试设置过程中无法设置。以下测试需要先设置数据,然后才能成功运行


"测试FTU"需要保存到SIM卡上的单个记录/联系人来测试
SIM联系人导入





https://developer.mozilla.org/en-us/docs/mariotte/mariotte_python_tests。


此外,gaatest还公开了一些用于管理gaia的锁屏和
应用程序管理器的api。请参见
https://github.com/mozilla-b2g/gaia/blob/master/tests/python/gaia test/gaia_test.py.

请遵循现有测试的流行风格。使用它们作为编写
测试的模板。
我们遵循[pep8](http://www.python.org/dev/peps/pep-0008/)进行格式化,
尽管我们对80个字符的行长度相当宽松。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用ContentExchange设置请求属性   java Spark/Hdfs/Hdfsclient兼容性   java springcloudstreamkafka配置:instanceCount和instanceIndex   Java中web服务序列化日期   java用动态数据替换占位符   java git gc似乎覆盖了一个packfile,留下了一个打开的文件描述符,其中包含对“oldxxx.pack”的引用   为什么Apache项目对Java版本敏感?   java Anylogic帮助如何在导入的3dobject通过输送机上的多个“站”时更改其颜色?   JavaEclipseNeonM2E可以导入一个大型项目,但似乎不能自动解决依赖关系   java@FindBy搜索具有满足条件的子元素的元素   java如何将ActionEvent e与键绑定一起使用?   java转换以集中方式从外部库抛出的异常   java中用户文件/数据文件与系统/程序文件的区别   java使用变量字符串或字符作为对象名   字体使用Java图形操纵字符串中每个字符的形状   JavaFX图表移动数据   java RandomAccessFile:将所有项设置为相同的字节数?   java Google Play inapp Billing onPurchasesUpdated()错误响应代码1   java在不知道属性名和属性数的情况下处理json对象   java是否可以一次从HazelcastInstance(映射和列表)中删除所有数据?