Marionette初识六---测试
Testing
1.我们使用单元测试和功能测试的组合,以几种不同的方式验证和测试 Marionette。
2.下面测试3种不同的组件:
--Marionette 服务器,使用 xpcshell 单元测试和用 Python 编写的功能测试的组合,分布在 Marionette- 和 WPT 测试中。
--Python 客户端使用相同的功能 Marionette 测试主体进行测试;
--支持 Marionette 或 Mn 工作的工具,测试使用单独的模拟式单元测试进行验证。
所有这些测试都可以使用 mach 运行。
3.xpcshell 单元测试
--Marionette 有一组 xpcshell 单元测试,位于 _remote/marionette/test/xpcshell,
以下是操作过程:
% ./mach test remote/marionette/test/unit
--由于测试是并行运行的,而且 xpcshell 本身很健谈(活跃),所以有时按顺序运行测试会很有用:
% ./mach test --sequential remote/marionette/test/xpcshell/test_error.js
这些单元测试作为 Treeherder 上 X 作业的一部分运行。
4.Marionette 功能测试
使用 Marionette Python 客户端的功能测试。这样启动 Firefox 进程并测试 Marionette 协议的输入和输出,并将在 Treeherder 上显示为 Mn。 以下命令将在本地运行所有测试:
% ./mach marionette-test
可以运行单独的测试
% ./mach marionette-test testing/marionette/harness/marionette_harness/tests/unit/test_navigation.py
如果想使用另一个二进制文件(如 Firefox Nightly)运行测试:
% ./mach marionette-test --binary /path/to/nightly/firefox TEST
在 Marionette 上工作时,从 Gecko 显示标准输出通常很有用,这可以使用 --gecko-log 选项来实现,其要点是可以将所有 Gecko 输出重定向到 stdout:
% ./mach marionette-test --gecko-log - TEST
在功能集成测试偶尔会弹出 Firefox 窗口,一个有用的提示是抑制窗口可以使用 Firefox 的无头模式:
% ./mach marionette-test -z TEST
-z 是 --headless 标志的别名,相当于设置 MOZ_HEADLESS 输出变量。
除了 MOZ_HEADLESS 之外,
还有 MOZ_HEADLESS_WIDTH 和MOZ_HEADLESS_HEIGHT,
用于控制 no-op 虚拟显示器的尺寸。
这与使用 Xvfb(1) 类似,可以从 X 窗口系统中了解到它,
但是也可以在 macOS 和 Windows 上工作。
5.Android
先决条件: 你已经建立了 Fennec。
可以运行 Android 模拟器,这意味着拥有所需的 AVD。
在 Fennec 上运行测试时,可以让 Marionette runner 负责启动 Fennec 和一个模拟器,
如下所示。
% ./mach marionette-test --emulator --app fennec --avd-home /path/to/.mozbuild/android-device/avd --emulator-binary /path/to/.mozbuild/android-sdk/emulator/emulator --avd=mozemulator-x86