2011-06-14 4 views
2

응용 프로그램/webapp/modules/b.py를 가져올 local_import 모듈이있는 applications/webapp/modules/a.py 모듈이 있습니다. doctest a.py 및 b.py를 원합니다. "-T"옵션이있는 web2py 쉘은 부분적으로 작동하지만 "a.py에서 테스트 찾기 : 클래스"이라고 말한 후에 아래에 붙여 넣은 예외가 있다고 불평합니다.Web2py 모듈 및 Doctests

"-T"옵션은 컨트롤러 테스트 용으로 만 사용 되었기 때문에이 사실을 알고 있습니다. 그러나 a.py 내의 local_import 때문에 web2py 환경 외부에서 a.py를 손쉽게 작성할 수있는 방법은 없습니다. 그렇다면 모듈을 리팩터링하여 내가 교리 할 수있는 방법은 무엇입니까?

Traceback (most recent call last):
File "web2py.py", line 19, in gluon.widget.start(cron=True) File "/home/.../web2py/gluon/widget.py", line 796, in start test(options.test, verbose=options.verbose) File "/home/.../web2py/gluon/shell.py", line 326, in test doctest_object(name, obj) File "/home/.../web2py/gluon/shell.py", line 322, in doctest_object doctest_object(attr_name, o) File "/home/.../web2py/gluon/shell.py", line 321, in doctest_object o = eval('%s.%s' % (name, attr_name), globs) File "", line 1, in NameError: name 'class' is not defined

답변

0

this에 기초하여, 다음과 같은 시도를했다. 현재로서는 잘 작동하지만 이것이 최선의 방법인지 확실하지 않습니다.

from gluon.shell import env 
globals().update(env('webapp', import_models=True)) 

a = local_import('a') 

import doctest 
doctest.testmod(a, verbose=True) 

는 또한, a.py에서 나는 '(b)에 local_import' this에 따라 대신 '수입 B'를 사용 :/개인 폴더에있는 파일 tests.py을 만듭니다. 사용

실행을 테스트 : - 당신은 단지도 모델에서, 일반 import 문을 사용할 수 있으며 또한

python web2py.py -S webapp --run applications/webapp/private/tests.py 
+2

, 최근에 출시 된 버전 1.96.x의, 당신은 더 이상 local_import 전혀 사용할 필요가 없습니다 컨트롤러. – Anthony

+0

@Anthony 굉장히 유용한 정보를 주셔서 감사합니다. 추가 정보 : http://groups.google.com/group/web2py/browse_thread/thread/ff3863c566b8b405/b96cd8f3b44e53d6 –