plone测试用例与风车测试的集成
niteoweb.windmill的Python项目详细描述
关于
Windmill扩展了Plone的FunctionalTestCase,为 运行风车测试。这是通过添加额外的测试层来实现的, 它将启动一个与windmill服务器并排的单线程zserver实例。
风车支持大多数现代浏览器。控制器api可以是 在http://trac.getwindmill.com/wiki/ControllerApi找到。
有关详细信息,请参见http://getwindmill.com
记住要读源代码,它非常轻量级!
访问Windmill客户端
风车测试应该来自WindmillTestCase。这提供了 WindmillClient作为self.wm的实例。除了支持 标准的WindMillClientapi,这个客户机有一个额外的方法 open_site(),它在打开时自动在plone站点url前面加上前缀 一个网址。否则它与open()方法相同。
常见问题解答
- 如何同步由浏览器和unittests中的操作操作操作的数据:
- 在windmill测试用例中,self.site_open()总是调用transaction.commit() 它将数据写入zodb。
- 在unittests中,只需执行导入事务;transaction.commit()和数据 将在浏览器中显示。
安装
添加niteoweb.windmill作为在中使用它的包的依赖项 setup.py。一种方法是通过[tests]extra,例如:
extras_require = { 'tests': ['niteoweb.windmill'], },
然后将其添加到构建中,例如:
[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”对象 没有属性“exc_info”。忽略它
- 风车在python2.4上的测试非常糟糕,如果你偶然发现了错误,请提交错误 任何;)
待办事项
- 加载现有ZODB存储器 的一些简单集成
更改日志
0.3.2(2011-09-15)
- 更改方式后,测试安装程序将等待zserver完成。 这有助于解决出现在 误导性错误信息。 [DO3CC]
0.3.1(2010年5月9日)
- 为了更好地与 loginasportalowner()[domen kozar]
0.3(2009年12月12日)
- 重构以在单独的层中启动zserver,而不是使用startzserver() 来自佐皮特斯凯斯。在同一测试中进行其他测试时,这更可靠 可能需要运行zserver的测试运行,因为startzserver()不是 层意识到并且不能可靠地被拆掉。 [马丁·阿斯佩利]
0.2(2009年11月23日)
- 将self.add_user函数添加到testcase(能够添加具有自定义 角色)[Domen Kozar]
- 修复了第一个请求失败(由于风车/plone racecodintions)[martin aspeli]
- 修正了风车依赖牵引[Martin Aspeli]