Как получить доступ к представлениям, определенным с помощью определенного [plone.] Browserlayer в тестовых примерах

Я новичок в тестировании и впервые пытаюсь создать тест для своего продукта Plone. Я использую Plone 3.3.

Базовый набор тестов работает, я могу выполнить его без ошибок. Я следил за этой документацией: http://plone.org/documentation/kb/testing ... за исключением того, что я пишу свои тесты в классах Python вместо doctests.

Моя проблема в том, что я не могу получить доступ к представлениям, определенным в моем приложении (я получаю ComponentLookupError).

Проблема, похоже, в с "уровнем браузера", определенным моими приложениями. Когда я удаляю атрибут layer = "..." из файла configure.zcml, тест может без проблем получить доступ к представлениям. Однако, если я добавлю его обратно, это не сработает. Я предполагаю, что это потому, что интерфейс de browserlayer не применяется к запросу.

Единственная ссылка на эту проблему, которую я обнаружил, находится в тестах для googlesitemap: http://dev.plone.org/collective/browser/googlesitemap/googlesitemap.common/trunk/googlesitemap/common/tests?rev =

Похоже, что автор создал специальный файл 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())

Так что я думаю, что мой скин и уровень браузера зарегистрированы правильно.

Что мне нужно сделать, чтобы уровень браузера был применен к запросу?

5
задан jphoude 11 April 2011 в 22:05
поделиться