Использование асфальтоукладчика и носа вместе с нетипичной структурой каталогов - PullRequest
3 голосов
/ 07 апреля 2009

Я пытаюсь написать задачу для Paver, которая будет запускать nosetests для моих файлов.

Моя структура каталогов выглядит так:

project/
   file1.py
   file2.py
   file3.py
   build/
      pavement.py
   subproject/
      file4.py
   test/
      file5.py
      file6.py

Doctests (с использованием опции --with_doctest) должна быть запущена на всех * .py файлах, в то время как только файлы под project/test (в этом примере file5.py и file6.py) должны быть найдены для тестовых процедур .

Я не могу понять, как это сделать - я могу написать собственный плагин для nose, который включает в себя правильные файлы, но я не могу заставить paver собрать и установить его раньше вызов задачи nosetests. Я также не могу найти способ заставить paver передать список файлов для тестирования на nosetests в командной строке.

Какой лучший способ заставить это работать?

1 Ответ

2 голосов
/ 22 декабря 2009

Это вообще близко к тому, что вы пытаетесь достичь?

from paver.easy import sh, path
__path__ = path(__file__).abspath().dirname()

@task
def setup_nose_plugin():
    # ... do your plugin setup here.

@task
@needs('setup_nose_plugin')
def nosetests():
    nose_options = '--with-doctest' # Put your command-line options in there
    sh('nosetests %s' % nose_options, 
       # Your pavement.py is in a weird place, so you need to specify the working dir:
       cwd=__path__.parent)

На самом деле я не совсем уверен, как настроить нос в определенных файлах, но это вопрос параметров командной строки.

--where позволяет вам указать каталог, но я не вижу способа сказать "запускайте только тесты здесь и другие тесты здесь". Вам может понадобиться два вызова sh('nosetests'), чтобы сделать все это.

...