2

applications/webapp/modules/a.py をインポートするための local_import を含むモジュール applications/webapp/modules/a.py があります。a.py と b.py を doctest したい。"-T" オプションを指定した web2py シェルは部分的に動作しますが、"Finding tests in a.py: class " の後に以下に貼り付けられた例外が表示されます。

これは、「-T」オプションがコントローラーのテストのみを目的としているためであることを理解しています。しかし、a.py 内に local_import があるため、web2py 環境の外で a.py を簡単にテストする方法はありません。では、モジュールをドキュメントテストできるようにするには、どのようにモジュールをリファクタリングすればよいのでしょうか?

トレースバック (最新の呼び出しが最後):
ファイル "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) File "", line 1, in NameError: name ' class ' is not defined

4

1 に答える 1

0

これを踏まえて、以下のようにしてみました。今のところ問題なく動作しますが、これが最善のアプローチかどうかはわかりません。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 に従って「local_import(b)」の代わりに「import b」を使用しまし

以下を使用してテストを実行します。

python web2py.py -S webapp --run applications/webapp/private/tests.py
于 2011-06-14T08:59:04.670 に答える