Модули и докуты Web2py - PullRequest
       24

Модули и докуты Web2py

2 голосов
/ 14 июня 2011

У меня есть модуль application / webapp / modules / a.py, который содержит local_import для импорта приложений / webapp / modules / b.py.Я хочу, чтобы doctest a.py и b.py.Оболочка web2py с опцией "-T" частично работает, но жалуется на исключение, вставленное ниже после сообщения "Поиск тестов в a.py: class ".

Я понимаю, что это потому, что опция "-T" предназначена только для тестирования контроллеров.Но из-за local_import в a.py нет простого способа проконтролировать a.py вне среды web2py.Итак, как мне провести рефакторинг модулей, чтобы я мог их протестировать?

Traceback (последний вызов был последним):
Файл "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) Файл "", строка 1,в NameError: имя ' class ' не определено

1 Ответ

0 голосов
/ 14 июня 2011

На основании этого я предпринял следующую попытку. На данный момент он работает нормально, но не уверен, что это лучший подход. В папке 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 я использовал «import b» вместо «local_import (b)» согласно this .

Запустите тесты, используя:

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