用于mozilla应用程序的ui自动化工具

mozmill的Python项目详细描述


[mozmill](https://developer.mozilla.org/en/mozmill)是一个测试工具,并且 用于编写测试和其他自动化脚本的ui自动化框架 用于基于壁虎的应用程序,如Firefox和Thunderbird。 它是作为一个[python]命令行工具构建的(http://python.org rel="nofollow">http://python.org)。python包提供了 从命令行运行测试以及 提供一种测试重新启动应用程序的方法。 mozmill有一个广泛的api来帮助您编写 模拟用户交互。

[Mozmill Test Automation项目](https://wiki.mozilla.org/qa/mozmill_test_automation" rel="nofollow">https://wiki.mozilla.org/qa/mozmill_test_automation) 成立于2009年1月,涵盖 火狐浏览器。查看[项目页面](https://wiki.mozilla.org/qa/mozmill_test_automation) 或者看看 [mozmill测试文档](https://developer.mozilla.org/en/mozmill_tests) 如何在写作和跑步中做出贡献 [mozmill测试](https://developer.mozilla.org/en/mozmill_tests)。 现有测试在 [发布测试](https://developer.mozilla.org/en/mozmill/release嫒testing) 循环使用新的主要版本或安全版本的Firefox。

此外,mozilla消息传递团队还有一个活动项目来处理 [雷鸟Mozmill测试](https://developer.mozilla.org/en/thunderbird/thunderbird_mozmill_testing)。

#安装

mozmill是一个python包。 有关如何安装的说明,请参见[安装页](/installation) 在您的系统上安装Mozmill。

#python客户端

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

##运行命令行客户端

[安装]后(安装) 可以使用mozmill命令运行mozmill的python包。 mozmill命令与一个或多个测试一起运行(-t mytest.js)或 测试清单(-m manifest.ini):

< Buff行情> 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的运行方式如下:

< Buff行情> mozmill-app firefox-b path/to/binary-t path/to/test.js[选项]

这将执行以下操作:

  • 在本例中,应用程序将由 [mozrunner](/en/mozrunner)
  • 将创建一个[profile对象](/en/mozprofile)类型 适用于测试中的应用程序
  • 将创建一个[python javascript桥](/jsbridge),它将 用于在python运行程序和javascript之间进行通信 测试环境
  • test.js文件将通过jsbridge发送 加载并执行(参见: [资源://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))
  • 测试结束后,结果将由 [可插入事件处理程序](./event handlers)

##API使用示例

自Mozmill2.0以来, [mozmill类](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/uuuu init_u.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):解析测试和附加清单

有关 程序设计。

##事件调度

mozmill将事件从javascript测试和模块分派到 蟒蛇赛跑者。请参阅[事件处理程序](./event handlers)了解其工作原理。

##从测试中获取数据

希望在javascript测试之间传输数据。那里 有几种机制可以做到这一点:

也见 [bug 668550-python应该有某种方式将数据传输到js端的测试](https://bugzilla.mozilla.org/show_Bug.cgi?id=668550

##python回调

javascript测试可以使用pythoncallbacks调用任意python [事件处理程序](./eventhandlers)包含在mozmill中。这个 [mozmill javascript模块](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/extension/resource/modules/mozmill.js) 具有firethoncallback()函数,该函数接受文件名, 文件中方法的名称、有序参数列表和 kwargs对象。此函数将派遣一个 mozmill.firethoncallback[事件](/eventhandlers)返回到 [mozmill.python_回调模块](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/python_callbacks.py) 它将导入并启动相应的回调。文件名 相对于javascript测试文件的位置。注意,任何 来自python回调的返回值不会发送到 javascript测试或以其他方式使用。

参见mutt [python_callbacks.js test](https://github.com/mozilla/mozmill/blob/master/mutt/mutt/tests/js/frame/python_callback.js) 以及附带的[python_callbacks.py](https://github.com/mozilla/mozmill/blob/master/mutt/mutt/tests/js/frame/python_callback.py) 例如。

启动python回调对于成功运行非常重要 成功。否则,[jsbridge](./jsbridge)错误将通过 python错误和线束将失败。

##重新启动和关闭

javascript测试可以启动 浏览器。有两种类型的关机/重新启动事件:

  • 用户关机:测试指示关机或重新启动。这确实 不停止浏览器,但表示进一步的操作将导致 重新启动或关闭(例如触发ctrl+q
  • 转轮关闭:测试告诉转轮关闭或重新启动, 可能在同一个文件中运行下一个测试。

两个案例都触发了一个[事件](/eventhandlers),mozmill.usershutdown, 这使得python线束能够预测关闭的类型,或者 重新启动。以下参数随事件一起发送:

  • 用户:true或false;关机是否由 "用户"事件
  • 重新启动:true或false;关机是否是重新启动
  • next:当前测试中要运行的下一个测试函数的名称 文件(如果有);否则将运行下一个测试文件(如果有)
  • 重置配置文件:true或false;是否将配置文件重置为 开始状态。请注意,这不可用于用户重新启动 事件,因为存在不允许配置文件的比赛条件 在应用程序重新启动之前可靠地重置

请参见方法startusershutdownrestartapplication,以及 停止应用程序 [mozmill controller](https://github.com/mozilla/mozmill/blob/master/mozmill/mozmill/extension/resource/modules/controller.js) 有关详细信息。

此外,Mozmill–Restart表示 每个测试文件。这有利于隔离测试行为,但是 否定,因为重新启动浏览器会导致运行时间更长。

#学习Mozmill测试

有用于mozmill javascript测试的api文档。

##Mozmill测试API

#查找和报告错误

莫兹密尔正在积极开发中。查看 [自动工具mozmill项目页面](https://wiki.mozilla.org/auto-tools/projects/mozmill) 关于发展的信息。如果你认为你在莫兹密尔发现了一只虫子, 请检查 [现有错误列表](https://bugzilla.mozilla.org/buglist.cgi?分辨率=-&;组件=Mozmill&;产品=测试)。 如果你发现的错误没有列在那里,请 [提交一个新的错误](https://bugzilla.mozilla.org/enter_Bug.cgi?产品=测试和组件=Mozmill) 在[bugzilla](https://bugzilla.mozilla.org/) 在"测试"产品和"Mozmill"组件下。拜托 提供尽可能多的细节,如果 可用,这表明了问题所在。谢谢你帮我们做莫兹密尔 更好!

#更新文档

[mdn](http://developer.mozilla.org/en/mozmill)页面被镜像 从[mozmill repository](https://github.com/mozilla/mozmill)。 请参阅[文档策略]的注释(./文档)。

#资源

Mozmill有几个在线资源:

  • [mdn mozmill page](http://developer.mozilla.org/en/mozmill
  • [github存储库](https://github.com/mozilla/mozmill
  • [python包索引页](http://pypi.python.org/pypi/mozmill" rel="nofollow">http://pypi.python.org/pypi/mozmill)
  • [自动工具Mozmill项目页](https://wiki.mozilla.org/auto-tools/projects/mozmill" rel="nofollow">https://wiki.mozilla.org/auto-tools/projects/mozmill) 为莫兹米尔的发展

此外,irc://irc.mozilla.org/上还有一个"mozmill频道" . 请过来打个招呼!

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

推荐PyPI第三方库


热门话题
java“抹去”了整个swing GUI,只有一个组件例外   有人能解释一下为什么这个用来反转字符串的Java程序不起作用吗?   jar使用java代码发送电子邮件   java如何使用keyRelease连续激发筛选表?   安卓 studio在java中执行lua脚本   java在实现StatefulJob时,“延迟”是什么意思?   当我再次尝试上传时,java Android无法查看保存在新目录中的图像   爪哇岩布剪刀问题只返回一半结果   使用Jersey Rest客户端进行java异步大文件上载   Java日历。加错年份   java对于多个autosize文本视图只有一个大小   java JodaTime:句点、间隔和持续时间之间有什么区别?   java对返回数据的正确处理   多线程多线程在java中打印偶数和奇数?   摆动Java弹跳球移动   httpconnection Java HttpUrlConnection抛出连接被拒绝   寻找C#的XmlConvert的Java等价物。编码名称   jetty在一个cookie Java代码中设置多个值   使用maven构建java jar显示错误   java我可以只使用输入在iText中生成超级脚本吗?