Plone TestCase与Windmill测试集成
项目描述
关于
niteoweb.windmill扩展了Plone的FunctionalTestCase,以提供运行Windmill测试的支持。这是通过添加一个额外的测试层来实现的,该层在Windmill服务器旁边启动一个单线程的ZServer实例。
Windmill支持大多数现代浏览器。控制器API可以在http://trac.getwindmill.com/wiki/ControllerApi找到。
更多详情,请参阅http://getwindmill.com
请记住阅读源代码,它非常轻量级!
访问Windmill客户端
风车测试应该从 WindmillTestCase 衍生。这提供了一个 WindmillClient 的实例作为 self.wm。除了支持标准的 WindMillClient API 之外,这个客户端还有一个额外的 open_site() 方法,该方法在打开 URL 时自动将 Plone 网站URL添加到前面。它在其他方面与 open() 方法相同。
常见问题解答
如何同步浏览器和 unittests 中由动作操作的数据
在 Windmill TestCase 中,self.site_open() 总是调用 transaction.commit(),这将数据写入 ZODB。
在 unittests 中,只需执行 import transaction;transaction.commit(),然后在浏览器中可以看到数据。
安装
将 niteoweb.windmill 添加到 setup.py 中使用该包的依赖项中。一种方法是使用 [tests] 额外功能,例如。
extras_require = { 'tests': ['niteoweb.windmill'], },
然后将其添加到您的 buildout 中,例如。
[tests] recipe = zc.recipe.testrunner eggs = my.package [tests]
用法
基本用法
from Products.PloneTestCase import PloneTestCase as ptc from niteoweb.windmill import WindmillTestCase ptc.setupPloneSite() class TestSample(WindmillTestCase): def afterSetUp(self): self.setRoles(['Manager']) self.login_user() def test_foo(self): self.wm.open_site(url="/about") self.wm.waits.forPageLoad(timeout=30000) def test_suite(): from unittest import TestSuite, makeSuite suite = TestSuite() suite.addTest(makeSuite(TestSample)) return suite
高级用法
from Products.PloneTestCase import PloneTestCase as ptc from niteoweb.windmill import WindmillTestCase, WindmillLayer class CustomWindmillLayer(WindmillLayer): site = 'plone2' windmill_settings = WindmillLayer.windmill_settings.copy() windmill_settings['START_FIREFOX'] = False WindmillLayer.windmill_settings['START_CHROME'] = True ptc.setupPloneSite() class TestWM(WindmillTestCase): layer = CustomWindmillLayer def afterSetUp(self): self.setRoles(['Manager']) self.login_user() def test_foo(self): self.wm.open_site('/login_form', site='plone2') self.wm.waits.forPageLoad(timeout=30000) def test_suite(): from unittest import TestSuite, makeSuite suite = TestSuite() suite.addTest(makeSuite(TestWM)) return suite
并使用调试模式运行测试,以便在错误/失败时停止
bin/instance test -s package.module -t test_foo -D
已知问题
在拆卸过程中,您有时会得到 AttributeError: ‘NoneType’ object has no attribute ‘exc_info’。忽略它。
Windmill 在 Python2.4 上的测试非常糟糕,如果您遇到任何问题,请提交错误;)
待办事项
一些简单的集成来加载现有的 ZODB 存储库
变更日志
0.3.2 (2011-09-15)
更改了测试设置等待 zserver 完成的方式。这有助于解决表现在非常奇怪且误导性错误消息中的时间问题。[do3cc]
0.3.1 (09.05.2010)
使用 portal_owner 而不是 default_user 以提高与 loginAsPortalOwner() 的兼容性 [Domen Kozar]
0.3 (12.12.2009)
重构以在单独的层中启动 ZServer 而不是使用 ZopeTestCase 中的 startZServer()。这在同一测试运行中还有其他可能需要运行 ZServer 的测试时更为可靠,因为 startZServer() 不可知层,并且无法可靠地拆卸。[Martin Aspeli]
0.2 (23.11.2009)
向测试用例添加了 self.add_user 函数(能够添加具有自定义角色的用户)[Domen Kozar]
修复了第一个请求失败(由于 windmill/plone 竞争条件)[Martin Aspeli]
修复了 windmill 依赖项提取 [Martin Aspeli]
项目详细信息
niteoweb.windmill-0.3.2.tar.gz 的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | e9875ee6c13213a02a2402b74248b94f65aacf57f4020201b337e94b586faa61 |
|
MD5 | 9fbf851c40d930bbd86e1bf0ab4093b4 |
|
BLAKE2b-256 | f3673575c6bd8d804f44b0adffc6e8291ab559d7aeb45dabb12f764f2f61ce75 |