Я хочу протестировать вызов подпроцесса в python, который использует интерактивную оболочку в linux. Интерактивная оболочка необходима для использования псевдонимов и ссылок пути в .bashr c.
В pycharm, запуск следующего кода в сочетании с pytest (щелкните правой кнопкой мыши, Run 'pytest in ... ) приводит к зависанию процесса тестирования.
import subprocess
def test_subprocess_with_interactive_bash():
p = subprocess.run(['/bin/bash', '-i', '-c', 'ls'])
Процесс python можно остановить. Процесс bash остается видимым в top
. Его нужно убить с помощью kill -9 <pid>
. Запуск кода за пределами pycharm (например, pytest test_subprocess.py
) не вызывает проблем. Я мог бы повторить этот эффект с самыми последними версиями pycharm (2020.1) и pytest (5.4.2-py37_0).
Почему это происходит? Есть ли решение или обходной путь?