[Product-Developers] plone.app.testing and AttributeError: 'NoneType' object has no attribute '_p_jar'
Martin Aspeli
optilude+lists at gmail.com
Tue May 17 07:34:42 UTC 2011
Hi,
On 17 May 2011 05:29, Noe Nieto <nnieto at noenieto.com> wrote:
> Hi all,
> I'm doing some doctests wih plone.app.testing and finally reached an error
> that I don't quite understand:
> Traceback caused on doctest:
> ---------------------------------------------------->8-----------------------------------------------------
> Failed example:
> browser.open(portal_url + '/login_form')
> Exception raised:
> Traceback (most recent call last):
> File "/usr/lib/python2.7/doctest.py", line 1254, in __run
> compileflags, 1) in test.globs
> File "<doctest README.txt[12]>", line 1, in <module>
> browser.open(portal_url + '/login_form')
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/zope.testbrowser-3.11.1-py2.7.egg/zope/testbrowser/browser.py",
> line 240, in open
> self.mech_browser.open(url, data)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/mechanize-0.2.5-py2.7.egg/mechanize/_mechanize.py",
> line 203, in open
> return self._mech_open(url, data, timeout=timeout)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/mechanize-0.2.5-py2.7.egg/mechanize/_mechanize.py",
> line 230, in _mech_open
> response = UserAgentBase.open(self, request, data)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/mechanize-0.2.5-py2.7.egg/mechanize/_opener.py",
> line 193, in open
> response = urlopen(self, req, data)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/mechanize-0.2.5-py2.7.egg/mechanize/_urllib2_fork.py",
> line 344, in _open
> '_open', req)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/mechanize-0.2.5-py2.7.egg/mechanize/_urllib2_fork.py",
> line 332, in _call_chain
> result = func(*args)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/Zope2-2.13.6-py2.7.egg/Testing/testbrowser.py",
> line 83, in http_open
> return self.do_open(PublisherConnection, req)
> File "/usr/lib/python2.7/urllib2.py", line 1154, in do_open
> h.request(req.get_method(), req.get_selector(), req.data, headers)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/zope.testbrowser-3.11.1-py2.7.egg/zope/testbrowser/testing.py",
> line 76, in request
> self.response = self.caller(request_string, handle_errors)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/Zope2-2.13.6-py2.7.egg/Testing/ZopeTestCase/functional.py",
> line 38, in wrapped_func
> return func(*args, **kw)
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/Zope2-2.13.6-py2.7.egg/Testing/ZopeTestCase/zopedoctest/functional.py",
> line 193, in http
> sync()
> File
> "/home/tzicatl/Aplicaciones/Buildout/egss/Zope2-2.13.6-py2.7.egg/Testing/ZopeTestCase/zopedoctest/functional.py",
> line 115, in sync
> getRootFolder()._p_jar.sync()
> AttributeError: 'NoneType' object has no attribute '_p_jar'
I assume you're using zope.testbrowser - can you show the code that
creates the Browser object?
I wonder if you're using Products.Five's version; you need to use
zope.testing.z2's version - see plone.app.testing/plone.testing docs.
Martin
> ---------------------------------------------------->8-----------------------------------------------------
> My test are arranged in two files inside a 'test' package. The file base.py
> contains this.
> ---------------------------------------------------->8-----------------------------------------------------
> from plone.app.testing import quickInstallProduct
> from plone.app.testing import IntegrationTesting, FunctionalTesting
> from plone.app.testing import PloneSandboxLayer
>
> class MyFixture(PloneSandboxLayer):
> def setUpPloneSite(self, portal):
> quickInstallProduct(portal,'my.package')
>
> LW_FIXTURE = MyFixture()
> # FunctionalTesting will create a stacked DemoStorage for each test and pop
> it on test tear- down
> LW_FUNCTIONAL_TESTING = FunctionalTesting(bases=(LW_FIXTURE,),
> name="MyFixture:Functional")
> ---------------------------------------------------->8-----------------------------------------------------
> And ther's also a test_doctests.py
> ---------------------------------------------------->8-----------------------------------------------------
> import unittest
> import doctest
> from plone.testing import layered
> from libroweb.coretypes.tests import base
>
> def test_suite():
> suite = unittest.TestSuite()
> suite.addTests([
> layered(doctest.DocFileSuite('README.txt', package='my.package',
>
> optionflags=doctest.REPORT_ONLY_FIRST_FAILURE |
> doctest.NORMALIZE_WHITESPACE |
> doctest.ELLIPSIS),
> layer=base.LW_FUNCTIONAL_TESTING),
> ])
> return suite
> if __name__ == '__main__':
> unittest.main(defaultTest='test_suite')
> ---------------------------------------------------->8-----------------------------------------------------
>
> What is that '_p_jar' attribute?
> My test fixture is a subclass of plone.app.testing.PloneSandboxLayer,
> AFAICT, I should not have any problem with persistency or stuff like that.
> any hints?
>
> --
> ---
> Noe Nieto
> NNieto Consulting Services
> M: nnieto at noenieto.com
> W: http://noenieto.com
> T: @tzicatl
> Li: Perfil en LinkedIn
>
>
> _______________________________________________
> Product-Developers mailing list
> Product-Developers at lists.plone.org
> https://lists.plone.org/mailman/listinfo/plone-product-developers
>
>
More information about the Product-Developers
mailing list