2012-10-20 2 views
2

피라미드 웹 앱의 테스트 환경을 시작하기 시작했습니다. 필자는 피라미드 패스터 템플릿으로 작성된 몇 가지 예제를 포함하여 몇 가지 기본 테스트 만 수행했습니다. nosetest을 통해 실행하면 모든 것이 잘 동작합니다.스니퍼를 사용하여 재실행하면 피라미드 앱 테스트가 실패합니다.

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 

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

을 나는이 :

DBSession.remove() 
testing.tearDown() 
:

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

을 그리고 내의 tearDown에서

오류가 이미 Configurator의 가져 오기에서 발생하므로 내부를 다시 설정하는 정리 코드를 놓친 것 같습니다. 그러나 나는 그것이 무엇인지 모릅니다. 어떤 힌트라도 대단히 환영 할 것입니다!

답변

2

이것은 실행 사이에 앱을 제대로 다시로드하지 않는 스니퍼 내의 이상한 동작처럼 들립니다. 귀하의 티어 코드는 정상적으로 보이며 현재 스레드의 미해결 데이터베이스 연결을 닫을뿐만 아니라 Pyramid에서 사용하는 스레드 스레드를 팝업합니다.