2014-10-31 2 views
1

У меня есть группа unittest тестовых примеров в отдельных каталогах. Существует также каталог, который просто содержит вспомогательные скрипты для тестов. Так что мой файл дерево выглядит следующим образомИзменение cwd перед запуском тестов

test_dir1 
test_dir2 
test_dir3 
helper_scripts 

Каждого питон файл в test_dir* будет иметь следующие строки:

import sys 
sys.path.append('../helper_scripts') 
import helper_script 

Это все работает отлично, до тех пор, как я запускать тесты из в их каталоге. Тем не менее, я хотел бы быть в корне проекта и просто запустите:

py.test 

и он пройти все каталоги и выполнения каждого теста он находит. Проблема в том, что тесты запускаются из неправильного каталога, поэтому sys.path.append не добавляет каталог helper_scripts, он добавляет родительский элемент корня проекта. Это приводит к сбою всего импорта с Import Error.

Есть ли способ сообщить py.test для запуска тестовых скриптов из их каталога? то есть. измените cwd перед их исполнением? Если нет, есть ли другой тестовый бегун, который я могу использовать?

ответ

0

Я хотел бы предложить, что вы вместо того, чтобы настроить среду так, что import helper_scripts будет работать независимо от текущего каталога. Это рекомендуемый подход.

Если вы абсолютно необходимы, хотя, вы можете использовать относительный импорт вместо:

from .. import helper_script 
+1

Как именно вы это делаете? Вам нужно изменить текущий каталог в скрипте? –

-1
os.chdir("newdir") 

изменит текущий рабочий каталог

+0

FYI: этот ответ в очереди низкой качества обзора. ** Выглядит хорошо **. – Paul

+1

Да, но я бы предпочел не модифицировать каждый файл python. Я ищу какой-то аргумент или настройку для py.test (или другого тестового бегуна), который скажет ему сначала перейти на каталог файла python, прежде чем выполнять его. –