मैंने पास्टर के माध्यम से कुछ ब्राउज़र दृश्य जोड़े हैं, अब मैं उन्हें plone.app.testing से चलाने की कोशिश कर रहा हूं, क्योंकि मुझे दोहराने योग्य और लगातार परीक्षण पसंद हैं। किसी भी समस्या के बिना ब्राउज़र से मैन्युअल रूप से दृश्य को कॉल करना।plone.app.testing ब्राउज़र दृश्य को कॉल नहीं कर सकता
मैंने मैन्युअल रूप से दृश्यों को आयात और प्रारंभ करने दोनों की कोशिश की है, साथ ही वर्ग को प्रतिबंधित ट्रैवर्स से कॉल करने की कोशिश की है। दोनों ही मामलों में एक वस्तु ठीक से प्रारंभ हो जाता है लेकिन जब मैं प्रतिपादन या तो एक समारोह के रूप में उदाहरण के कॉल करने या __call का उपयोग कर को गति प्रदान करने के लिए प्रयास __() विधि, मैं निम्नलिखित त्रुटि मिलती है:
*** KeyError: 'global_cache_settings
मैं README में उदाहरण को देखा plone.app.testing में .rsting यह समस्या का जिक्र नहीं प्रतीत होता है, त्वरित googling या तो कोई परिणाम नहीं मिला। यह साइट अनुकूलन में से एक हो सकता है, लेकिन जब स्रोत greping, मैंने पाया 'global_cache_settings' Products.CMFPlone में उल्लेख किया है, तो यह शायद एक प्लोन बात है:
eggs/Products.CMFPlone-4.1.4-py2.6.egg/Products/CMFPlone/skins/plone_templates/main_template.pt
28: <metal:cache use-macro="context/global_cache_settings/macros/cacheheaders">
29: Get the global cache headers located in global_cache_settings.
eggs/plone.app.layout-2.1.13-py2.6.egg/plone/app/layout/presentation/presentation.pt
11: <metal:cache use-macro="here/global_cache_settings/macros/cacheheaders">
12: Get the global cache headers located in global_cache_settings.
eggs/plonetheme.sunburst-1.1.6-py2.6.egg/plonetheme/sunburst/skins/sunburst_templates/main_template.pt
20: <metal:cache use-macro="context/global_cache_settings/macros/cacheheaders">
21: Get the global cache headers located in global_cache_settings.
यहाँ प्रासंगिक वर्ग घोषणाओं:
from zope.interface import implements, Interface
from Products.Five import BrowserView
from Products.CMFCore.utils import getToolByName
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from Products.MyProduct import MyProductMessageFactory as _
class IPromoBoardHome(Interface):
"""
PromoBoardHome view interface
"""
def __init__(self, context, request):
pass
def __call__(self):
pass
def test():
""" test method"""
class PromoBoardHome(BrowserView):
"""
PromoBoardHome browser view
"""
implements(IPromoBoardHome)
def __init__(self, context, request):
self.context = context
self.request = request
def __call__(self):
return ViewPageTemplateFile('pt/promoboardhome.pt')(self)
@property
def portal_catalog(self):
return getToolByName(self.context, 'portal_catalog')
@property
def portal(self):
return getToolByName(self.context, 'portal_url').getPortalObject()
def test(self):
"""
test method
"""
dummy = _(u'a dummy string')
return {'dummy': dummy}
टेम्पलेट:
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"
lang="en"
metal:use-macro="here/main_template/macros/master"
i18n:domain="Products.MyProduct">
<body>
<div metal:fill-slot="main">
<tal:main-macro metal:define-macro="main"
tal:define="testview view/test">
<span tal:content="testview/dummy">test</span>
</tal:main-macro>
</div>
</body>
</html>
configure.zcml घोषणा:
<browser:page
for="*"
name="promoboardhome"
class=".promoboardhome.PromoBoardHome"
allowed_interface=".promoboardhome.IPromoBoardHome"
permission="zope2.View"
/>
परीक्षण फ़ाइल:
import unittest2 as unittest
from . import PROD_INTEGRATION_TESTING
from plone.app.testing import setRoles, TEST_USER_ID
from Products.CMFCore.utils import getToolByName
from Products.MyProduct.browser.promoboardhome import PromoBoardHome
class TestPromoBoardHome(unittest.TestCase):
layer = PROD_INTEGRATION_TESTING
def setUp(self):
self.portal = self.layer['portal']
def test_call(self):
pbh = self.portal.restrictedTraverse('@@promoboardhome')
try:
pbh()
except KeyError:
print "that didn't work!"
import pdb; pdb.set_trace()
Am मैं गलत यहाँ कुछ कर रही?
मैं ऐसा कर सकता था, लेकिन मुझे नहीं लगता कि यह एकीकरण परीक्षण और स्वीकृति परीक्षण के अधिक होगा। लेकिन यह समस्या को हल करने के रूप में हल करता है। धन्यवाद। –
@AlexVolkov: यह दोनों के लिए उपयोग योग्य है, और यह प्लोन में आम तौर पर एकीकरण परीक्षण कैसे किया जाता है। –