跳转到主要内容

Mozilla应用程序的UI自动化工具

项目描述

[Mozmill](https://mdn.org.cn/en/Mozmill) 是一个测试工具和UI自动化框架,用于编写测试和其他自动化脚本,用于Gecko应用程序(如Firefox和Thunderbird)。它被构建为一个 [python](https://pythonlang.cn) 命令行工具。Python包提供了一种机制,可以从命令行运行测试,并提供了一种测试应用程序重启的方法。Mozmill具有一个广泛的API,可以帮助您编写模拟用户交互的功能测试。

[[Mozmill测试自动化项目](https://wiki.mozilla.org/QA/Mozmill_Test_Automation)] 于2009年1月开始,涵盖了Firefox的自动化工作。查看[项目页面](https://wiki.mozilla.org/QA/Mozmill_Test_Automation)或查看[Mozmill测试文档](https://mdn.org.cn/en/Mozmill_Tests),以了解如何参与编写和运行[Mozmill测试](https://mdn.org.cn/en/Mozmill_Tests)。现有的测试在Firefox新主要版本或安全版本发布的[发布测试](https://mdn.org.cn/en/Mozmill/Release_Testing)周期中运行。

此外,Mozilla Messaging团队还有一个活跃的项目,该项目负责[使用Mozmill测试Thunderbird](https://mdn.org.cn/en/Thunderbird/Thunderbird_MozMill_Testing)。

# 安装

Mozmill作为一个Python包提供。有关如何在您的系统上设置Mozmill的说明,请参阅[安装页面](./Installation)。

# Python客户端

[Mozmill Python包](http://pypi.python.org/pypi/mozmill) 调用并运行Gecko应用程序,执行自动测试脚本,并累积和报告结果。

## 运行命令行客户端

安装Python包后,您可以使用mozmill命令运行Mozmill。使用mozmill命令运行一个或多个测试(-t mytest.js)或测试清单(-m manifest.ini

mozmill -m functional_tests.ini mozmill -t mytest.js -t myothertest.js

mozmill –help 显示可用的命令行选项和更多有关命令行工具的详细信息。有关测试清单的格式和用法,请参阅http://hg.mozilla.org/automation/ManifestDestiny/file/tip/README.txt

## 控制流程

Mozmill Python包在调用时将Mozmill和[jsbridge](./jsbridge)扩展捆绑到一个配置文件中。

Mozmill的运行方式如下

mozmill -app firefox -b path/to/binary -t path/to/test.js [选项]

这将执行以下操作

  • 应用程序,在这种情况下是firefox,将由[mozrunner](/en/Mozrunner)查找

  • 将为受测试的应用程序创建一个适当的[配置文件对象](/en/Mozprofile)

  • 将创建一个[python-javascript桥](./jsbridge),它将用于在Python运行器和JavaScript测试环境之间进行通信

  • test.js文件发送到jsbridge,在那里它被加载和执行(请参阅:[resource://mozmill/modules/frame.js](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/extension/resource/modules/frame.js))

  • 事件将从JavaScript发送回Python,在那里它们将被监听(见:[资源://mozmill/modules/frame.js](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/extension/resource/modules/frame.js))

  • 在测试运行结束时,结果将通过[可插拔事件处理器](./EventHandlers)报告

## 示例API使用

从Mozmill 2.0开始,[MozMill类](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/__init__.py)可用作健壮的API。示例API使用可在https://github.com/mozilla/mozmill/tree/master/mozmill找到。

## 架构

Python Mozmill是一个测试框架和事件调度器。

Mozmill Python包由多个不同的包依赖项构建

  • [jsbridge](./jsbridge) : Python到JavaScript桥接接口

  • [mozrunner](/en/Mozrunner) : Mozilla应用程序(Firefox、Thunderbird等)的可靠启动/停止/配置

  • [mozinfo](/en/Mozinfo) : 统一的Mozilla系统信息接口

  • [manifestparser](http://hg.mozilla.org/automation/ManifestDestiny) : 解析测试和扩展manifest

有关程序设计的更多信息,请参阅[架构](./Architecture)。

## 事件调度

Mozmill将JavaScript测试和模块中的事件调度到Python运行器。有关此过程的信息,请参阅[事件处理器](./EventHandlers)。

## 将数据传输到和从测试中

将数据传输到和从JavaScript测试中是期望的。有几个机制可以做到这一点

另请参阅[问题668550 - python应该有一些方式将数据传输到JS侧的测试](https://bugzilla.mozilla.org/show_bug.cgi?id=668550)

## Python回调

JavaScript测试可以使用Mozmill附带包含的PythonCallbacks [事件处理器](./EventHandlers)调用任意Python。Mozmill JavaScript模块具有firePythonCallback()函数,它接受filename、文件中的method名称、有序的列表argskwargs对象。此函数将调度到[mzmill.python_callbacks模块](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/python_callbacks.py)的[cite]mozmill.firePythonCallback [事件](./EventHandlers),该模块将导入并触发适当的回调。filename是JavaScript测试文件的位置相对路径。请注意,任何来自Python回调的返回值都不会发送到JavaScript测试或以其他方式利用。

请参阅[cite]mutt [python_callbacks.js测试](https://github.com/mozilla/mozmill/blob/master/mutt/mutt/tests/js/frame/python_callback.js)和相应的[cite]python_callbacks.py](https://github.com/mozilla/mozmill/blob/master/mutt/mutt/tests/js/frame/python_callback.py)示例。

成功运行的关键在于Python回调能够成功触发。否则,将通过Python错误引发一个[JsBridge](./jsbridge)错误,导致测试框架失败。

## 重启和关闭

JavaScript测试可以启动浏览器关闭和重启。存在两种关闭/重启事件类型:

  • 用户关闭:测试指示关闭或重启。这不会停止浏览器,但表示进一步的操作将导致重启或关闭(如触发Ctrl+Q

  • 运行器关闭:测试告诉运行器关闭或重启,可能给出当前文件中下一个要运行的测试。

两种情况都会触发一个[cite]事件[/cite],mozmill.userShutdown,允许Python测试框架预测关闭或重启的类型。事件中发送以下参数:

  • 用户:true或false;关闭是否由“用户”事件触发

  • 重启:true或false;关闭是否为重启

  • 下一个:当前测试文件中下一个要运行的测试函数的名称(如果有);否则将运行下一个测试文件(如果有)

  • 重置配置文件:true或false;是否将配置文件重置到初始状态。请注意,此参数不适用于用户重启事件,因为在应用重启之前,存在不允许配置文件可靠重置的竞争条件

请参阅[MozMillController](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/extension/resource/modules/controller.js)上的startUserShutdownrestartApplicationstopApplication方法以了解详细信息。

此外,mozmill –restart在每两个测试文件之间触发测试框架重启。这有利于隔离测试行为,但缺点是浏览器重启会导致运行时间更长。

## 学习Mozmill测试

为Mozmill JavaScript测试提供了API文档。

## Mozmill测试API

## 查找和报告错误

Mozmill 正在积极开发中。请访问 [自动工具 Mozmill 项目页面](https://wiki.mozilla.org/Auto-tools/Projects/Mozmill) 了解开发信息。如果您认为您在 Mozmill 中发现了一个错误,请检查 [现有错误列表](https://bugzilla.mozilla.org/buglist.cgi?resolution=—&component=Mozmill&product=Testing)。如果您的发现错误未列在列表中,请在 [bugzilla](https://bugzilla.mozilla.org/enter_bug.cgi?product=Testing&component=Mozmill) 下“测试”产品“Mozmill”组件中 [提交新的错误](https://bugzilla.mozilla.org/enter_bug.cgi?product=Testing&component=Mozmill)。请尽可能提供详细信息,并附上 Mozmill 测试(如果有的话),以显示问题。感谢您帮助我们使 Mozmill 更好!

更新文档

[MDN](https://mdn.org.cn/en/Mozmill) 页面是从 [mozmill 存储库](https://github.com/mozilla/mozmill) 镜像的。请参阅我们[文档策略](./Documentation) 上的说明。

资源

存在多个关于 Mozmill 的在线资源

此外,在 irc://irc.mozilla.org/ 上有一个 #mozmill 频道。请过来看看,打个招呼!

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于 安装软件包 的信息。

源分发

mozmill-2.0.10.2.tar.gz (137.9 kB 查看哈希值)

上传时间

由以下组织支持