我有一个模块applications / webapp / modules / a.py,它包含一个local_import来导入applications / webapp / modules / b.py.我想doctest a.py和b.py.带有“-T”选项的web2py shell部分有效,但在说“在a.py中查找测试:类”之后,会粘贴下面粘贴的异常。
我知道这是因为“-T”选项仅用于测试控制器。但是由于a.py中的local_import,在web2py环境之外没有简单的方法来测试a.py.那么我该如何重构模块以便我可以对它们进行doctest测试呢?
追踪(最近的呼叫最后):
文件“web2py.py”,第19行,in gluon.widget.start(cron = True)文件 “/home/.../web2py/gluon/widget.py” 第796行,开始 test(options.test,verbose = options.verbose)文件 “/home/.../web2py/gluon/shell.py” 第326行,在测试中 doctest_object(name,obj)文件“/home/.../web2py/gluon/shell.py”, 第322行,在doctest_object中 doctest_object(attr_name,o)文件 “/home/.../web2py/gluon/shell.py” 第321行,在doctest_object中 o = eval('%s。%s'%(name,attr_name),globs)文件“”, 第1行,在NameError:name中 类'未定义
答案 0 :(得分:0)
基于this,我做了如下尝试。它现在工作正常但不确定这是否是最好的方法。在private /文件夹中,使用以下命令创建文件tests.py:
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中,我根据this使用了'import b'而不是'local_import(b)'。
使用以下方式运行测试:
python web2py.py -S webapp --run applications/webapp/private/tests.py