如何在测试用例中访问使用特定[plone.]浏览器层定义的视图

jph*_*ude 5 testing plone

我是测试的新手,我正在尝试为我的Plone产品首次创建测试.我在Plone 3.3上.

基本的测试套件可以工作,我可以毫无错误地执行它.我遵循了这个文档:http: //plone.org/documentation/kb/testing ...除了我在Python类而不是doctests中编写我的测试.

我的问题是我似乎无法访问我的应用程序中定义的视图(我得到ComponentLookupError).

问题似乎与我的应用程序定义的"browserlayer"有关.当我从configure.zcml中删除layer ="..."属性时,测试可以毫无问题地访问视图.但是,如果我将其添加回来,则无效.我想那是因为de browserlayer接口没有应用于请求.

我发现这个问题的唯一参考是在googlesitemap的测试中:http://dev.plone.org/collective/browser/googlesitemap/googlesitemap.common/trunk/googlesitemap/common/tests?frev =

作者似乎已经为测试制作了一个自定义的ZCML文件,其中删除了layer ="..."属性.(这会起作用,但是为测试维护一个单独的zcml文件似乎非常糟糕)

在我的测试中,我已经包含以下内容(取自googlesitemap测试),其中包含以下内容:

from jambette.site.interfaces import IJambetteLayer # this is my browserlayer
from plone.browserlayer.utils import registered_layers
self.assertTrue(IJambetteLayer in registered_layers())
Run Code Online (Sandbox Code Playgroud)

所以我认为我的皮肤和浏览器是正确注册的.

我需要做什么才能将浏览器层应用于请求吗?

Mar*_*ers 7

浏览器图层界面简单地"绘制"到请求上directlyProvides.在查看视图之前,只需在测试设置中执行此操作:

from zope import interface
from jambette.site.interfaces import IJambetteLayer

...

    directlyProvides(request, IJambetteLayer)
Run Code Online (Sandbox Code Playgroud)