Python 如何在plone.app.testing中添加成员文件夹?
如何在中添加功能测试的成员文件夹,以便在真实站点中可以找到它 在我正在测试的产品安装步骤中设置了成员区域创建标志Python 如何在plone.app.testing中添加成员文件夹?,python,testing,plone,Python,Testing,Plone,如何在中添加功能测试的成员文件夹,以便在真实站点中可以找到它 在我正在测试的产品安装步骤中设置了成员区域创建标志 membership.memberareaCreationFlag = 1 我需要让这个测试正常工作: class TestMemberFolder(unittest.TestCase): layer = MY_FUNCTIONAL_TESTING def setUp(self):
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创建新用户,但这无助于neighter
memberareaCreationFlag在live Plone站点中运行良好。self.assert\u不是一种测试方法,请使用self.assertTrue或self.assertsnotnone之类的方法 要添加成员文件夹,只需打开“成员文件夹创建”并添加新用户。类似于
def setUpPloneSite(self, portal):
# Install into Plone site using portal_setup
quickInstallProduct(portal, 'Products.DataGridField')
quickInstallProduct(portal, 'Products.ATVocabularyManager')
quickInstallProduct(portal, 'Products.MasterSelectWidget')
if HAVE_LP:
quickInstallProduct(portal, 'Products.LinguaPlone')
applyProfile(portal, 'vs.org:default')
portal.acl_users.userFolderAddUser('god', 'dummy', ['Manager'], [])
setRoles(portal, 'god', ['Manager'])
login(portal, 'god')
对我们来说非常有效。我终于明白了 首先,membership.memberareaCreationFlag=1不足以启用成员文件夹 必须使用plone.app.controlpanel.security中的SecurityControlPanelAdapter启用它
from plone.app.controlpanel.security import ISecuritySchema
# Fetch the adapter
security_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_NAME
browser.getControl(name='__ac_password').value = TEST_USER_PASSWOR
browser.getControl(name='submit').click()
呸。设置创建标志是不够的。我已经更新了我的问题。@Epeli:正如matt所说,您还需要添加一个新用户。这会有什么帮助?这些产品对成员文件夹功能有影响吗?