2

ピラミッド Web アプリのテスト環境を立ち上げて実行し始めたところです。ピラミッド パスター テンプレートによって作成されたいくつかの例を含む、いくつかの基本的なテストがあります。それらを介して実行すると、nosetestすべて正常に動作します。

snifferを介して実行すると、最初の実行も正常に機能します。しかし、コードを変更して sniffer がテストを再度実行すると、次のスタック トレースが得られます。

======================================================================
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

----------------------------------------------------------------------

私のセットアップには次のものがあります。

self.config = testing.setUp()
engine = create_engine('sqlite://')        
DBSession.configure(bind=engine)
Base.metadata.create_all(engine)

そして私のティアダウンで:

DBSession.remove()
testing.tearDown()

のインポートでエラーが既に発生しているConfiguratorため、内部をリセットするクリーンアップ コードが欠落していると思います。しかし、それが何であるかはわかりません。どんなヒントでも大歓迎です!

4

1 に答える 1

2

これは、実行間でアプリを適切にリロードしていないスニファー内の奇妙な動作のように思えます。ティアダウン コードは問題ないように見え、現在のスレッドで未解決のデータベース接続を閉じ、Pyramid が使用するスレッドローカルをポップする必要があります。

于 2012-10-24T03:50:47.567 に答える