2014-12-11 2 views
7

В настоящее время я работаю над проектом, включающим тесты, которые будут выполняться на удаленном хосте (bash). К сожалению, удаленный интерпретатор python не уважает доступные пакеты сайтов (он встроенный: abaqus python (2.6)). Однако использование переменной PYTHONPATH позволяет указать локальные установки и сделать доступными дополнительные пакеты. Следовательно, на удаленной машине я просто добавляю соответствующую строку в мой .bashrc-файл.Настройка удаленной среды при использовании xdist

К сожалению, при распространении тестов с использованием xdist вызывается только «голый» bash без каких-либо специфических нагрузок профиля. Таким образом, тесты терпят неудачу с некоторыми ошибками импорта, поскольку argparse, который требуется pytest, недоступен.

Есть ли способ настроить удаленный хост, прежде чем он начнет выполнение любого кода pytest (что требует argparse)? Другими словами, есть ли способ добавить переменные среды на хосты до начала импорта pytest?

Я пробовал использовать приборы с возможностью сеанса и autouse=True, которые (конечно) не работали. Кроме того, я пытался что-то вроде

# in conftest.py 
import sys  
def pytest_configure_node(): 
    sys.path.insert(1, "/somepath/") 
    print sys.path 

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

Я начала тестирования с использованием

py.test --tx [email protected]//python="abaqus613 python" -vs --dist=each --rsyncdir foo 

Это начинается правильный интерпретатор Python (Python 2.6.2 для Abaqus 6.13-2), но терпит неудачу с

ImportError: No module named argparse 
+0

Какую команду вы используете для запуска 'xdist'? –

+0

@ReutSharabani см. Мой обновленный вопрос. – Jakob

+0

какую строку вы используете для установки PYTHONPATH в .bashrc при тестировании вручную? –

ответ

1

я, наконец, понял, довольно хак, но разумно рабочий путь. В вызове python можно указать ряд команд, поэтому я запускаю скрипт, который настраивает среду перед вызовом abaqus python.

Сценарий установки (setup.sh), расположенный на удаленной машине, выглядит следующим образом:

export PYTHONPATH=/path/to/libraries 

и завершить вызов теперь

Таким образом я получаю необходимый импорт работает в abaqus python.

1

Мой плагин https://github.com/pytest-dev/pytest-cloud должен помочь вам

это автоматически виртуальная среда rsyncs python для ведомых устройств, одно требование заключается в том, что ваша папка virtualenv должна находиться внутри папки, где te й папка

после Rsync также активирует виртуальную среду, так что все ваши зависимости есть правильно

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