plone.org赏金计划标志显示机制
项目描述
变更历史
变更日志
0.1 (2011-05-13)
清理并发布 [aclark]
初始功能 [mylan at quintagroup.com]
使用ZopeSkel创建配方 [mylan at quintagroup.com]
详细文档
介绍
这是一个完整的功能性测试。这里的重点是测试用户可能会输入和看到的内容,系统基本上作为一个黑盒进行测试。我们使用PloneTestCase来设置此测试,因此我们有一个完整的Plone站点来玩。我们 可以 检查门户的状态,例如使用self.portal和self.folder,但通常不提倡这样做,因为您没有将系统作为一个黑盒来对待。此外,如果您使用例如self.setRoles()之类的调用登录或设置角色,这些在作为单独会话运行的测试浏览器中是不会反映的。
作为一个doctest,我们可以在这里讲述一个故事。
首先,我们必须进行一些设置。我们使用与Five一起提供的testbrowser,因为它提供了适当的Zope 2集成。尽管如此,大部分文档都在底层的zope.testbrower包中。
>>> from Products.Five.testbrowser import Browser >>> browser = Browser() >>> portal_url = self.portal.absolute_url()
以下内容在编写和调试testbrowser测试时很有用。它让我们能看到所有的错误消息在error_log中。
>>> self.portal.error_log._ignored_exceptions = ()
有了这些,我们可以转到门户首页并登录。我们将使用PloneTestCase的默认用户来完成这项工作
>>> from Products.PloneTestCase.setup import portal_owner, default_password
由于附加主题或产品可能会删除或隐藏登录小部件,此测试将使用plone附带的登录表单。
>>> browser.open(portal_url + '/login_form') >>> browser.getControl(name='__ac_name').value = portal_owner >>> browser.getControl(name='__ac_password').value = default_password >>> browser.getControl(name='submit').click()
在这里,我们设置登录表单字段的值,然后模拟提交点击。然后确保我们获得友好的登录消息
>>> "You are now logged in" in browser.contents True
最后,在我们继续之前,让我们返回到网站的首页
>>> browser.open(portal_url)
--附加内容在这里--
赏金计划提交内容类型
在本节中,我们通过执行添加、更新和删除赏金计划提交内容项等基本操作来测试赏金计划提交内容类型。
添加新的赏金计划提交内容项
我们使用“添加新”菜单添加新内容项。
>>> browser.getLink('Add new').click()
然后我们选择要添加的项目类型。在本例中,我们选择“赏金计划提交”并单击“添加”按钮以进入添加表单。
>>> browser.getControl('Bounty Program Submission').click() >>> browser.getControl(name='form.button.Add').click() >>> 'Bounty Program Submission' in browser.contents True
现在我们填写表单并提交。
>>> browser.getControl(name='title').value = 'Bounty Program Submission Sample' >>> browser.getControl('Save').click() >>> 'Changes saved' in browser.contents True
完成了!我们在门户中添加了一个新的“赏金计划提交”内容项。
更新现有的赏金计划提交内容项
让我们点击“编辑”选项卡并更新对象属性值。
>>> browser.getLink('Edit').click() >>> browser.getControl(name='title').value = 'New Bounty Program Submission Sample' >>> browser.getControl('Save').click()
我们检查更改是否已应用。
>>> 'Changes saved' in browser.contents True >>> 'New Bounty Program Submission Sample' in browser.contents True
删除一个赏金计划提交内容项
如果我们转到主页,我们可以在全局导航标签中看到一个标题为“新的赏金计划提交样本”的标签页。
>>> browser.open(portal_url) >>> 'New Bounty Program Submission Sample' in browser.contents True
现在我们将删除“新的赏金计划提交样本”对象。首先,我们转到内容标签页并选择“新的赏金计划提交样本”进行删除。
>>> browser.getLink('Contents').click() >>> browser.getControl('New Bounty Program Submission Sample').click()
我们单击“删除”按钮。
>>> browser.getControl('Delete').click() >>> 'Item(s) deleted' in browser.contents True
因此,如果我们返回主页,将不再有“新的赏金计划提交样本”标签页。
>>> browser.open(portal_url) >>> 'New Bounty Program Submission Sample' in browser.contents False
作为贡献者添加新的赏金计划提交内容项
不仅网站管理员可以添加赏金计划提交内容项,而且网站贡献者也可以。
让我们注销并登录为“贡献者”,这是一个被分配了贡献者角色的门户成员。
>>> browser.getLink('Log out').click() >>> browser.open(portal_url + '/login_form') >>> browser.getControl(name='__ac_name').value = 'contributor' >>> browser.getControl(name='__ac_password').value = default_password >>> browser.getControl(name='submit').click() >>> browser.open(portal_url)
我们使用“添加新”菜单添加新内容项。
>>> browser.getLink('Add new').click()
我们选择“赏金计划提交”并单击“添加”按钮以进入添加表单。
>>> browser.getControl('Bounty Program Submission').click() >>> browser.getControl(name='form.button.Add').click() >>> 'Bounty Program Submission' in browser.contents True
现在我们填写表单并提交。
>>> browser.getControl(name='title').value = 'Bounty Program Submission Sample' >>> browser.getControl('Save').click() >>> 'Changes saved' in browser.contents True
完成了!以贡献者身份登录时添加了新的赏金计划提交内容项。
最后,让我们以管理员身份重新登录。
>>> browser.getLink('Log out').click() >>> browser.open(portal_url + '/login_form') >>> browser.getControl(name='__ac_name').value = portal_owner >>> browser.getControl(name='__ac_password').value = default_password >>> browser.getControl(name='submit').click() >>> browser.open(portal_url)
贡献者
mylan at quintagroup.com,作者
aclark at aclark.net,维护者