I just started to get my testing environment for a pyramid web app up and running. I have just a few basic tests, including some examples created by the pyramid paster template. If I run them via nosetest
everything works fine.
If I run them via sniffer, the first run works fine too. But if I change my code and sniffer runs the tests again, I get the following stack trace:
======================================================================
ERROR: Failure: TypeError (isinstance() arg 2 must be a class, type, or tuple of classes and types)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/nose/loader.py", line 390, in loadTestsFromName
addr.filename, addr.module)
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/nose/importer.py", line 39, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/nose/importer.py", line 86, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/domma/Develop/WebApps/Gligg/Gligg/gligg/__init__.py", line 1, in <module>
from pyramid.config import Configurator
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/pyramid/__init__.py", line 1, in <module>
from pyramid.request import Request
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/pyramid/request.py", line 27, in <module>
from pyramid.response import Response
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/pyramid/response.py", line 28, in <module>
class Response(_Response):
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/zope/interface/declarations.py", line 306, in __call__
classImplements(ob, *self.interfaces)
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/zope/interface/declarations.py", line 244, in classImplements
spec = implementedBy(cls)
File "/Users/domma/Develop/WebApps/Gligg/gligg_env/lib/python2.7/site-packages/zope/interface/declarations.py", line 169, in implementedByFallback
if isinstance(spec, Implements):
TypeError: isinstance() arg 2 must be a class, type, or tuple of classes and types
----------------------------------------------------------------------
In my setUp I have:
self.config = testing.setUp()
engine = create_engine('sqlite://')
DBSession.configure(bind=engine)
Base.metadata.create_all(engine)
And in my tearDown:
DBSession.remove()
testing.tearDown()
The error already occures in the import of Configurator
, so I would guess I miss some cleanup code which resets some internals. But I have no idea what it might be. Any hint would be very welcome!
This sounds like some odd behavior within sniffer where it isn't properly reloading the app between runs. Your teardown code looks fine and should close the outstanding database connection in the current thread as well as pop any threadlocals used by Pyramid.