Модули и документы Web2py

#web2py #doctest #web2py-modules

#web2py #doctest #web2py-модули

Вопрос:

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

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

Обратная трассировка (последний последний вызов):
Файл «web2py.py «, строка 19, на глюонном языке.Файл widget.start(cron= True) «/home/…/web2py/gluon/widget.py «, строка 796, в файле start test(options.test, подробный=options.verbose) «/home/…/web2py/gluon/shell.py «, строка 326, в тестовом doctest_object(имя, 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: имя ‘класс‘ не определено

Ответ №1:

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

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

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

Комментарии:

1. Кроме того, начиная с недавно выпущенной версии 1.96.x, вам больше не нужно использовать local_import вообще — вы можете просто использовать обычные инструкции импорта, даже из моделей и контроллеров.

2. @Anthony Спасибо за потрясающе полезную информацию. Подробнее здесь: groups.google.com/group/web2py/browse_thread/thread /…