Plone 的集成测试框架。
项目描述
介绍
PloneTestCase 是 ZopeTestCase 包顶部的一个薄层。它的开发是为了简化基于 Plone 的应用程序和产品的测试。
PloneTestCase 包提供
函数installProduct将 Zope 产品安装到测试环境中。
函数installPackage将通过五:registerPackage 注册的 Python 包安装到测试环境中。需要 Zope 2.10.4 或更高版本。
用于在测试数据库中创建 Plone 门户的函数setupPloneSite 。
注意:setupPloneSite接受可选的products参数,它允许您指定将使用 quickinstaller 工具添加到门户的产品列表。从 0.8.2 开始,您还可以传递extension_profiles参数来导入 GS 扩展配置文件。
派生测试用例的类PloneTestCase。
用于派生功能单元测试的测试用例的类FunctionalTestCase 。
沙盒类和功能类与您自己的测试用例混合。
常量portal_name、portal_owner、default_policy、 default_products、default_base_profile、default_extension_profiles、 default_user和default_password。
对于 Plone 版本 >= 2.1的常数PLONE21评估为真。
对于 Plone 版本 >= 2.5的常数PLONE25评估为真。
对于 Plone 版本 >= 3.0的常量PLONE30评估为真。
对于 Plone 版本 >= 3.1 计算结果为 true的常数PLONE31 。
对于 Plone 版本 >= 3.2的常量PLONE32计算结果为真。
对于 Plone 版本 >= 3.3的常量PLONE33计算结果为真。
对于 Plone 版本 >= 4.0的常量PLONE40评估为真。
对于 Plone 版本 >= 5.0的常数PLONE50评估为真。
模块utils包含来自 ZopeTestCase 包的所有实用功能。
示例 PloneTestCase
from Products.PloneTestCase import PloneTestCase PloneTestCase.installProduct('SomeProduct') PloneTestCase.setupPloneSite(products=('SomeProduct',)) class TestSomething(PloneTestCase.PloneTestCase): def afterSetup(self): self.folder.invokeFactory('Document', 'doc') def testEditDocument(self): self.folder.doc.edit(text_format='plain', text='data') self.assertEqual(self.folder.doc.EditableBody(), 'data')
使用 GenericSetup 的示例 PloneTestCase 设置
from Products.PloneTestCase import PloneTestCase PloneTestCase.installProduct('SomeProduct') PloneTestCase.setupPloneSite(extension_profiles=('SomeProduct:default',))
请参阅 ZopeTestCase 包的文档,尤其是 PortalTestCase 类的文档。
查看此目录中的示例测试以了解如何使用 PloneTestCase 包。另请参阅 Plone 随附的测试。
复制testSkeleton.py以开始您自己的测试。
变更日志
0.9.18 (2014-03-02)
调整 Plone 5 而不是 4.4 的条件。[达维萨利]
0.9.17 (2013-05-23)
有条件地安装 plone.app.event 并且仅适用于 Plone 4.4 及更高版本。[主题]
0.9.16 (2013-04-06)
修复损坏的导入,加载 plone.app.events 条件。[柯基]
0.9.15 (2012-07-02)
使一些进口现代化。[汉诺施]
次要 pep8 清理,在一些区域将 has_key() 语法更改为 'in' 语法 [pbdiode]
0.9.14 (2012-04-15)
尽早安装软件包,以便新集合的测试设置在 Plone 4.2 中正常工作。[达维萨利]
如果没有 Plone,则显式失败(而不是晦涩难懂)。[斯蒂芬]
0.9.13 - 2011-01-03
依赖Products.CMFPlone而不是Plone。[埃尔罗]
为了与 Plone 4.1 兼容,稍微放宽对角色数量的测试。[达维萨利]
0.9.12 - 2010-09-20
修复 safe_load_site 调用的清理方法,将组件注册表标记为未初始化,无论该标志是在 Zope2.App.zcml 还是 Products.Five.zcml 中。[达维萨利]
0.9.11 - 2010-09-15
在测试设置期间安装plone.app.imaging monkeypatches。[达维萨利]
添加来自 zope.testrunner 并从 zope.testing [jfroche] 中删除的层支持
0.9.10 - 2010-07-13
与 Zope 2.13 兼容并避免 zope.schema 词汇表的设置问题。[汉诺施]
恢复 r100668,因为该问题不再发生。[斯蒂芬]
0.9.9 - 2009-11-14
使用 _createObjectByType 创建的文件夹被报告为在 portal_catalog 中具有 portal_type 'ATFolder'。重新索引它会将其翻转到正确的“文件夹”。[埃斯蒂尔]
在拆除时重置 memoize RAMCaches。修复http://dev.plone.org/plone/ticket/9425 [stefan]
在测试设置期间从plone.app.blob安装启用 Blob 的类型。[巫术]
在测试运行期间安装 TinyMCE 产品。[汉诺施]
将 sunburst 主题添加到 Plone 4 的默认扩展配置文件中。 [davisagli]
以向后兼容的方式指定依赖项。[汉诺施]
更改了default_extension_profiles的行为。我们现在总是添加默认配置文件。您仍然可以通过将明确的空 default_extension_profiles参数传递给setupPloneSite函数来覆盖它。[汉诺施]
解开PLONE50及之前的产品安装代码。包裹的基本数量是完全不同的。[汉诺施]
将 Plone 版本确定代码移动到其自己的模块中。[汉诺施]
将 PLONE40 常数调整为 PLONE50 并检查 Plone 主干。[汉诺施]
在 Plone trunk 中手动安装 ATContentTypes 默认配置文件。[汉诺施]
0.9.8 - 2009-04-16
防止缺少 portal_quickinstaller 工具。[汉诺施]
修复了使用 Globals 的弃用警告。[汉诺施]
调整 _createHomeFolder 以创建“成员”文件夹,如果它不是由站点创建代码创建的。[汉诺施]
将迁移移出 CMFPlone 包后调整了 PLONE40 检查。[汉诺施]
添加了 PLONE33 常量。[斯蒂芬]
0.9.8b4 - 2008-10-26
添加了 PLONE32 常量。[斯蒂芬]
0.9.8b3 - 2008-10-16
修正:在完全配置门户之前创建了默认成员区域。[斯蒂芬]
错误修正:获得所有权后重新索引成员区域的安全性。[斯蒂芬]
0.9.8b2 - 2008-10-09
Egg 由于使用 svn 导出而损坏。谁会有 thunk setuptools 有所作为?[斯蒂芬]
0.9.8b1 - 2008-10-05
安静地安装所有 Plone 产品。
Eggified Products.PloneTestCase。
0.9.7
添加了 PLONE31 和 PLONE40 常量。
现在可以多次设置 PloneSite 层。感谢 Andreas Zeidler 和 Balazs Ree。
0.9.6
处理 CMF 2.1 及更高版本中的新皮肤设置。
如果 ZopeTestCase 支持,则提供 hasPackage 和 installPackage。
将许可证更改为 GPL,清理我的行为。
在 Plone 3.0 及更高版本中使用新的无状态 GenericSetup API。
0.9.4
小测试修复以适应 PlonePAS 和 CMF 的变化。
0.9.3
在 0.9.2 中,我们意外失去了覆盖 getPortal 的能力。固定的。
将“placefulSetup”拼写为“placefulSetUp”,以与 zope.app.testing 保持一致。
0.9.2
改进了对本地组件注册表的支持。我们现在在 Plone >= 3.0 中创建它后立即注册它,因为在站点设置期间需要它。我们还将门户设置为一个站点,只要它被访问以使 CMF 皮肤获取工作即可。
0.9.0
准备将 ZopeTestCase 切换到 Zope3 接口。
懒惰地加载 etc/site.zcml 而不是使用包装器。
一一导入扩展配置文件以获得更好的控制。
添加了一个 PloneTestCase.addProfile() 方法,该方法允许将扩展配置文件导入站点。这是将“extension_profiles”参数传递给 setupPloneSite() 的替代方法。
使用 layer.PloneSite 懒惰地创建 Plone 站点。
将 utils.py 重命名为 Five.py。
0.8.6
从 Plone 3.0 开始,门户也是一个组件注册表。现在自动进行需要的登录。
确保层清理将 Five.zcml 重置为“未初始化”。
0.8.4
允许将基本配置文件传递给 setupPloneSite 函数。
添加了 PLONE30 常量。
有条件地应用 StringIO 猴子补丁,因为它是从 Plone 3.0 开始的 CMFPlone/补丁的一部分
添加了 ZCMLLayer 以支持最近的 Zopes 和 zope.testing.testrunner。感谢惠特莫里斯。
0.8.2
添加了对将 GenericSetup 扩展配置文件列表传递给 setupPloneSite 函数的支持。
0.8.0
添加了对 Plone 2.5 的支持。