在Plone 5的测试中自动安装默认内容类型

时间:2016-02-19 16:14:46

标签: testing plone fixtures plone-5.x

我一直试图在我们的一些附加组件中添加与Plone 5的兼容性,我发现了一个我想避免的模式:似乎我必须在测试夹具上手动安装默认内容类型,如下所示:

...
PLONE_VERSION = api.env.plone_version()


class Fixture(PloneSandboxLayer):

    defaultBases = (PLONE_FIXTURE,)

    def setUpZope(self, app, configurationContext):
        if PLONE_VERSION >= '5.0':
            import plone.app.contenttypes
            self.loadZCML(package=plone.app.contenttypes)
        ...

    def setUpPloneSite(self, portal):
        if PLONE_VERSION >= '5.0':
            self.applyProfile(portal, 'plone.app.contenttypes:default')
        ...

FIXTURE = Fixture()
...

有什么方法可以避免这种情况吗?

1 个答案:

答案 0 :(得分:4)

据我记得,依赖于PLONE_APP_CONTENTTYPES_FIXTURE就足够了。 像这样(未经测试):

try:
    from plone.app.contenttypes.testing import PLONE_APP_CONTENTTYPES_FIXTURE
except ImportError:
    PLONE_APP_CONTENTTYPES_FIXTURE = None


class Fixture(PloneSandboxLayer):
    if PLONE_VERSION >= '5.0':
        defaultBases = (PLONE_APP_CONTENTTYPES_FIXTURE,)
    else:
        defaultBases = (PLONE_FIXTURE,)