使用带CubicWeb的风车

Windmill 实现跨浏览器测试、浏览器内记录和回放,以及快速准确调试和测试环境集成的功能。

Online features list 可用。

安装

风车

你现在必须手动安装风车。如果您使用的是Debian,则没有二进制软件包 (yet

最简单的解决方案是使用 setuptools/pip 命令(对于干净的环境,请查看 virtualenv 项目也)::

$ pip install windmill
$ curl -O http://github.com/windmill/windmill/tarball/master

然而,风车项目并不经常发布。我们的建议是使用git存储库的最后一个快照:

$ git clone git://github.com/windmill/windmill.git HEAD
$ cd windmill
$ python3 setup.py develop

安装说明包括 available .

之后确保将风车模块放在您的 Python 路径中:

$ python3 -c "import windmill"

X假人

为了减少测试机器不必要的系统负载,建议使用x虚拟服务器来测试Unix Web客户端,您需要一个虚拟的视频x驱动程序(作为debian中的x server xorg视频虚拟包)和一个light x服务器 Xvfb .

虚拟驱动程序是XFree86 DDX提供的特殊驱动程序。要使用虚拟驱动程序,只需在xorg.conf配置文件的device部分将其替换为普通卡驱动程序。例如,如果您通常使用一个ATI驱动程序,那么您将有一个带有驱动程序“ati”的设备部分,让X服务器知道您希望它加载和使用ATI驱动程序;但是,对于这些一致性测试,您将把该行更改为驱动程序“dummy”,并删除任何其他特定于ATI的optio。来自设备部分的ns。

From: http://www.x.org/wiki/XorgTesting

然后,可以使用以下命令运行X服务器:

$ /usr/bin/X11/Xvfb :1 -ac -screen 0 1280x1024x8 -fbdir /tmp

风车使用

记录您的用例

  • 手动启动实例

  • 开始 Windmill 以URL站点作为最后一个参数(读取 Usage 或使用 '-h' 用于查找所需命令行参数的选项)

  • 使用“录制”按钮

  • 单击保存以获取用例的python代码

  • 将内容复制到 风车 目录

如果您使用火狐作为客户端,请考虑“firebug”选项。

如果您有一个正在运行的实例,可以通过 负荷试验 风车选项:

$ windmill -m firebug loadtest=<test_file.py> <instance url>

或者使用内部风车外壳探索可用命令:

$ windmill -m firebug shell <instance url>

并输入python命令:

>>> load_test(<your test file>)
>>> run_test(<your test file>)

将风车测试集成到CubicWeb中

设置环境

您必须创建一个新的单元测试文件和 windmill 把你所有的风车用例记录下来并复制到其中。

# test_windmill.py

# Run all scenarii found in windmill directory
from cubicweb.devtools.cwwindmill import (CubicWebWindmillUseCase,
                                          unittest_main)

if __name__ == '__main__':
    unittest_main()

运行测试

您可以轻松地运行您的风车测试套件 pytestunittest .你必须复制一个 test_windmill.py 文件从 web.test .

运行测试系列:

$ pytest test/test_windmill.py

默认情况下,CubicWeb将使用 火狐 作为默认浏览器,将尝试在本地主机上运行测试实例服务器。一般来说,你不需要改变任何东西。

检查 cubicweb.devtools.cwwindmill.CubicWebWindmillUseCase 用于风车配置。可以使用以下类属性编辑风车设置:

  • 浏览器识别字符串(火狐 |ie| Safari Chrome(默认为Firefox)

  • 测试目录测试文件路径或目录(默认情况下,风车目录位于机组案例文件下)

  • 编辑测试加载并编辑调试测试(默认为false)

实例:

browser = 'firefox'
test_dir = osp.join(__file__, 'windmill')
edit_test = False

如果要更改CubicWeb测试服务器参数,可以从 CubicWebServerConfig 或通过重写 configcls 属性在 CubicWebServerTC ::

.. sourcecode:: python
类OtherCubicWebServerConfig(CubicWebServerConfig):

端口=9999

类NewCubicWebServerTc(CubicWebServerTc):

configcls=otherCubicWebServerConfig

例如,CubicWeb框架风车测试可以通过以下方式手动运行:

$ pytest web/test/test_windmill.py

编辑测试

您可以切换 edit_test 变量以启用测试版本。

但是如果你用 pytest 作为测试运行程序,使用 -i 直接选择。将加载测试系列,您可以逐步运行断言:

$ pytest -i test/test_windmill.py

在这种情况下, firebug 扩展名将自动为您加载。

之后,不要忘记将您编辑的测试保存到正确的文件中(没有自动保存功能)。

最佳实践

不要在同一端口上运行其他实例。您可能会使某些回归保持沉默(测试运行程序在其他版本中会自动失败)。

通过在预期的主URL页上使用断言来启动用例。否则,如果没有对所用导航的清晰解释,所有测试都可能失败。

在同一位置 test_windmill.py 创建一个 windmill/ 用你的风车记录用例。

告诫

文件上传

风车不能上传文件。这是浏览器javascript支持/沙盒的限制,而不是风车本身。如果有一些命令可以启动WindmillHTTP代理,向通过的下一个HTTP请求添加一个特定的文件,这样上传至少可以被伪造,那就太好了。

偏好

A .windmill/prefs.py 无法用于重新定义默认配置值。

要管理浏览器扩展,请阅读 advanced topic chapter .

更多配置示例见 windmill/conf/global_settings.py 作为模板。