[Grok-dev] ComponentLookupError: (<InterfaceClass zope.intid.interfaces.IIntIds>, '') on integration tests

Christian Klinger cklinger at novareto.de
Wed Mar 21 04:35:21 UTC 2012


Hi Noe,

i think you have to manually set your site.

Something like:

    from zope.component.hooks import setSite
    setSite(self.root['app'])

HTH
Christian

Noe Nieto schrieb:
> I'm writing some integration test for our products. I'm placing that
> tests in a separate package: homeviva.testing
>
> When I run my test, with zope.testrunner, I'm always having the
> following traceback:
>
> Error in test test_consworks_views
> (homeviva.testing.tests.test_dbmodels.ConsworksTestCase)
> Traceback (most recent call last):
>    File "/usr/lib64/python2.7/unittest/case.py", line 318, in run
>      self.setUp()
>    File
> "/home/tzicatl/Aplicaciones/Codigo/HomeViva/homeviva_trunk/src/homeviva.testing/homeviva/testing/tests/test_dbmodels.py",
> line 26, in setUp
>      self.root['app'] = Consworks()
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.container-3.12.0-py2.7-linux-x86_64.egg/zope/container/folder.py",
> line 95, in __setitem__
>      setitem(self, self.data.__setitem__, name, object)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.container-3.12.0-py2.7-linux-x86_64.egg/zope/container/contained.py",
> line 559, in setitem
>      notify(event)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.event-3.5.0_1-py2.7.egg/zope/event/__init__.py",
> line 23, in notify
>      subscriber(event)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/event.py",
> line 24, in dispatch
>      zope.component.subscribers(event, None)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/_api.py",
> line 136, in subscribers
>      return sitemanager.subscribers(objects, interface)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/registry.py",
> line 321, in subscribers
>      return self.adapters.subscribers(objects, provided)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.interface-3.6.1-py2.7-linux-x86_64.egg/zope/interface/adapter.py",
> line 585, in subscribers
>      subscription(*objects)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/event.py",
> line 32, in objectEventNotify
>      zope.component.subscribers((event.object, event), None)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/_api.py",
> line 136, in subscribers
>      return sitemanager.subscribers(objects, interface)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/registry.py",
> line 321, in subscribers
>      return self.adapters.subscribers(objects, provided)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.interface-3.6.1-py2.7-linux-x86_64.egg/zope/interface/adapter.py",
> line 585, in subscribers
>      subscription(*objects)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/grok-1.4.3-py2.7.egg/grok/meta.py",
> line 175, in __call__
>      self._createIntIds(site)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/grok-1.4.3-py2.7.egg/grok/meta.py",
> line 216, in _createIntIds
>      setupUtility(site, intids, IIntIds)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/grokcore.site-1.5-py2.7.egg/grokcore/site/meta.py",
> line 108, in setupUtility
>      container[name_in_container] = utility
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.container-3.12.0-py2.7-linux-x86_64.egg/zope/container/btree.py",
> line 112, in __setitem__
>      setitem(self, self._setitemf, key, value)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.container-3.12.0-py2.7-linux-x86_64.egg/zope/container/contained.py",
> line 560, in setitem
>      notifyContainerModified(container)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.container-3.12.0-py2.7-linux-x86_64.egg/zope/container/contained.py",
> line 332, in notifyContainerModified
>      notify(ContainerModifiedEvent(object, *descriptions))
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.event-3.5.0_1-py2.7.egg/zope/event/__init__.py",
> line 23, in notify
>      subscriber(event)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/event.py",
> line 24, in dispatch
>      zope.component.subscribers(event, None)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/_api.py",
> line 136, in subscribers
>      return sitemanager.subscribers(objects, interface)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/registry.py",
> line 321, in subscribers
>      return self.adapters.subscribers(objects, provided)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.interface-3.6.1-py2.7-linux-x86_64.egg/zope/interface/adapter.py",
> line 585, in subscribers
>      subscription(*objects)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.catalog-3.8.1-py2.7.egg/zope/catalog/catalog.py",
> line 197, in reindexDocSubscriber
>      id = component.getUtility(IIntIds, context=cat).queryId(ob)
>    File
> "/home/tzicatl/Aplicaciones/Buildout/eggs/zope.component-3.10.0-py2.7.egg/zope/component/_api.py",
> line 169, in getUtility
>      raise ComponentLookupError(interface, name)
> ComponentLookupError: (<InterfaceClass zope.intid.interfaces.IIntIds>, '')
>
> My testcase looks like this:
>
>
> class ConsworksTestCase(unittest.TestCase):
> """
>      TestCase for the Consworks app object
> """
>      layer = HomeVivaIntegrationLayer(homeviva.testing)
>
>      def setUp(self):
>          #Add test app
>          from consworks.app import Consworks
>          self.root = self.layer.getRootFolder()
>          self.root['app'] = Consworks()
>          self.app = self.root['app']
>
>     def test_here(self):
>         ....
>
> I tried to manually  register a Intid utility in my layer, but with no
> results.
>
> from zope.app.wsgi.testlayer import BrowserLayer
> from zope.site.hooks import getSiteManager
> from zope.intid.interfaces import IIntIds
> from zope.intid import IntIds
>
> class HomeVivaIntegrationLayer(BrowserLayer):
> """
>      Integration Layer for HomeViva.
> """
>
>      def testSetUp(self):
>          super(HomeVivaIntegrationLayer, self).testSetUp()
>          # root = self.getRootFolder()
>          # sm = getSiteManager()
>          # sm.registerUtility(IntIds(), provided=IIntIds)
>          # import pdb; pdb.set_trace( )
>
>
>
> Anyone has hit this error? how did you fixed it?
>
>
>
> --
> ---
> Noe Nieto
> NNieto Consulting Services
> M: nnieto at noenieto.com <mailto:nnieto at noenieto.com>
> W: http://noenieto.com
> T: @tzicatl <https://twitter.com/#%21/tzicatl>
> Li: Perfil en LinkedIn <http://www.linkedin.com/profile/view?id=84300665>
>
> _______________________________________________
> Grok-dev mailing list
> Grok-dev at zope.org
> https://mail.zope.org/mailman/listinfo/grok-dev



More information about the Grok-dev mailing list