使用带CubicWeb的风车¶
Windmill 实现跨浏览器测试、浏览器内记录和回放,以及快速准确调试和测试环境集成的功能。
安装¶
风车¶
你现在必须手动安装风车。如果您使用的是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()
运行测试¶
您可以轻松地运行您的风车测试套件 pytest 或 unittest
.你必须复制一个 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 作为模板。