2013-07-10 3 views
2

Я работаю с довольно разрастающимся встроенным проектом python. В настоящий момент тесты скрыты за вызовом make, который устанавливает PYTHONPATH и LD_LIBRARY_PATH на рабочей станции, чтобы тесты могли завершиться. Можно ли указать это в конфигурации носа, так что пользователю нужно только вызывать nosetests в каталоге?Можно ли настроить переменные среды в носах setup.cfg

В противном случае я должен просто включить в тестовые файлы некоторую котельную плиту для управления требуемыми дорожками?

+0

Чтение далее, похоже, мне нужно настроить тестовое устройство, которое запускается перед моими испытаниями. Однако документация на нос, по-видимому, не имеет ясных примеров. – stsquad

+0

создайте файл runtests.sh, который устанавливает среду вверх, а затем вызывает 'nosetests' –

+0

@JoranBeasley: этого я и стараюсь избежать. Это, в основном, удобная вещь, так как IDE, похоже, предназначены только для непосредственного использования nosetests. – stsquad

ответ

1

Нет нос не имеет никакого тока возможность установить переменные окружения из файла конфигурации:

def _configTuples(self, cfg, filename): 
    config = [] 
    if self._config_section in cfg.sections(): 
     for name, value in cfg.items(self._config_section): 
      config.append((name, value, filename)) 
    return config 

def _readFromFilenames(self, filenames): 
    config = [] 
    for filename in filenames: 
     cfg = ConfigParser.RawConfigParser() 
     try: 
      cfg.read(filename) 
     except ConfigParser.Error, exc: 
      raise ConfigError("Error reading config file %r: %s" % 
           (filename, str(exc))) 
     config.extend(self._configTuples(cfg, filename)) 
    return config 

Любые параметры конфигурации, указанные в файле конфигурации будут храниться непосредственно в виде кортежа в списке. На самом деле, если вы попытались передать некоторые значения, которые нос не принял, то это вызовет ошибку.

def _applyConfigurationToValues(self, parser, config, values): 
    for name, value, filename in config: 
     if name in option_blacklist: 
      continue 
     try: 
      self._processConfigValue(name, value, values, parser) 
     except NoSuchOptionError, exc: 
      self._file_error(
       "Error reading config file %r: " 
       "no such option %r" % (filename, exc.name), 
       name=name, filename=filename) 
     except optparse.OptionValueError, exc: 
      msg = str(exc).replace('--' + name, repr(name), 1) 
      self._file_error("Error reading config file %r: " 
          "%s" % (filename, msg), 
          name=name, filename=filename) 

См. Часть, в которой вы получаете NoSuchOptionError.

У вас есть один вариант, с которым я немного помолчал; используя nose-testconfig, который позволяет вам указать параметры конфигурации теста в каком-то файле, где нос не будет выдать ошибку, если ваши значения непризнаны.

Или вы можете просто выбросить некоторые @setup или @teardown методов в ваших тестах. Я был бы очень осторожен в добавлении любого скрипта setupTests.sh, так как это добавляет дополнительный уровень сложности для запуска ваших тестов.

Смежные вопросы