如何在plone.app.testing中添加Members文件夹?

如何在plone.app.testing中添加Members文件夹?,第1张

概述如何在plone.app.testing中为我的功能测试添加Members文件夹,以便在真实站点中找到它?在我正在测试的产品安装步骤中设置了成员区域创建标志.membership.memberareaCreationFlag = 1 我需要让这个测试工作:class TestMemberFolder(unittest.TestCase):

如何在plone.app.testing中为我的功能测试添加Members文件夹,以便在真实站点中找到它?

在我正在测试的产品安装步骤中设置了成员区域创建标志.

membership.memberareaCreationFlag = 1 

我需要让这个测试工作:

class TestMemberFolder(unittest.TestCase):              layer = MY_FUNCTIONAL_TESTING             def setUp(self):                                        portal = self.portal = self.layer['portal']     def test_members_folder(self):        membership = getToolByname(self.portal,'portal_membership')          membership.addMember("basicuser","secret",["Member"],[])        transaction.commit()        login(self.portal,"basicuser")                                       # This works just fine,because it was set by my product        self.assertEquals(membership.memberareaCreationFlag,1,"memberareaCreationFlag must be 1 when it is enabled")            members_folder = membership.getMembersFolder()                        # But this fails        self.assertIsNotNone(members_folder)             # Also we should have the user folder here        self.assertTrue(members_folder.hasObject('basicuser'))

我特别需要会员文件夹功能.只是测试用户拥有的文件夹不会削减它.

此外,我尝试使用acl_users.userFolderAddUser创建新用户,但这无助于更好.

memberareaCreationFlag在现场Plone网站上运行得很好.

最佳答案我终于弄明白了.

首先,membership.memberareaCreationFlag = 1不足以启用成员文件夹.

必须在plone.app.controlpanel.security中使用SecurityControlPanelAdapter启用它

from plone.app.controlpanel.security import ISecuritySchema# Fetch the adaptersecurity_adapter =  ISecuritySchema(portal)security_adapter.set_enable_user_folders(True)

此外,功能测试夹具不会自动创建成员文件夹,但可以在夹具类中手动安装

class YourPloneFixture(PlonesandBoxLayer):    defaultBases = (PLONE_FIXTURE,)    def setUpZope(self,app,configurationContext):        # required by Products.Cmfplone:plone-content        z2.installProduct(app,'Products.PythonScripts')    def setUpPlonesite(self,portal):        # Installs all the Plone stuff. Workflows etc.        self.applyProfile(portal,'Products.Cmfplone:plone')        # Install portal content. Including the Members folder!        self.applyProfile(portal,'Products.Cmfplone:plone-content')

最后,因为会员文件夹是通过用户登录创建的,但plone.app.testing中的登录帮助程序函数似乎太低了.使用zope.testbrowser登录似乎可以解决问题

browser = browser(self.layer['app'])browser.open(self.portal.absolute_url() + '/login_form')browser.getControl(name='__ac_name').value = TEST_USER_namebrowser.getControl(name='__ac_password').value = TEST_USER_PASSWORbrowser.getControl(name='submit').click()

唷. 总结

以上是内存溢出为你收集整理的如何在plone.app.testing中添加Members文件夹?全部内容,希望文章能够帮你解决如何在plone.app.testing中添加Members文件夹?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1205773.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-04
下一篇2022-06-04

发表评论

登录后才能评论

评论列表(0条)

    保存