У меня следующая структура каталогов:

main/
    |setup.cfg
    |foo.cfg
    |tests/
          |setup.cfg
          |foo.cfg
          |test_simple.py

И протестируем test_simple.py:

from nose.tools import *
from nose.config import all_config_files, user_config_files

def test_singe():
    print 'all:', all_config_files()
    print 'user:', user_config_files()
    assert_true(False)

От main/ я бегу nosetests tests/test_simple.py и получаю:

all: ['setup.cfg']
user: []

Я думал, что либо all_config_files, либо user_config_files вернут все файлы конфигурации. Но я получаю только верхний setup.cfg.

Согласно документам:

all_config_files()
    Return path to any existing user config files, plus any setup.cfg
    in the current working directory.

user_config_files()
    Return path to any existing user config files

Я ожидаю, что файлы main/tests/*.cfg будут найдены. Что случилось?

0
Jakub M. 29 Мар 2013 в 14:33

1 ответ

Лучший ответ

Согласно исходному коду, user_config_files просто вернет конфигурации из домашней папки пользователя:

config_files = [
    # Linux users will prefer this
    "~/.noserc",
    # Windows users will prefer this
    "~/nose.cfg"
    ]

...

def user_config_files():
    """Return path to any existing user config files
    """
    return filter(os.path.exists,
                  map(os.path.expanduser, config_files))

all_config_files вернет user_config_files + setup.cfg из корневого каталога (где вы запускаете тесты):

def all_config_files():
    """Return path to any existing user config files, plus any setup.cfg
    in the current working directory.
    """
    user = user_config_files()
    if os.path.exists('setup.cfg'):
        return user + ['setup.cfg']
    return user

Надеюсь, это поможет.

1
alecxe 29 Мар 2013 в 17:39