Web2py模块和Doctests

时间:2011-06-14 07:28:39

标签: web2py doctest web2py-modules

我有一个模块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中   '未定义

1 个答案:

答案 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