首页 文章

Web2py模块和Doctests

提问于
浏览
2

我有一个模块applications / webapp / modules / a.py,它包含一个local_import来导入applications / webapp / modules / b.py.我想doctest a.py和b.py.带有"-T"选项的web2py shell部分可以正常工作,但在说“在a.py中查找测试: class ”之后,粘贴下面粘贴的异常 .

我知道这是因为“-T”选项仅用于测试控制器 . 但是由于a.py中的local_import,在web2py环境之外没有简单的方法来测试a.py.那么我该如何重构模块以便我可以对它们进行doctest测试呢?

回溯(最近一次调用最后一次):文件“web2py.py”,第19行,在gluon.widget.start(cron = True)文件“/home/.../web2py/gluon/widget.py”,第796行,在开始测试(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)NameError中的文件“”,第1行:未定义名称“class”

1 回答

  • 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
    

相关问题