Robot Framework: библиотеки Process и OperatingSystem: указание пути к файлу в команде

Всем привет!

Возникла проблема с указанием пути к файлу в команде, которая вызывается тестом. Тест запускается на Mac:

Keyword name
	Start Process    sudo <command> <filename.txt>    ${PASSWORD}
	${OUTPUT}=    Read Process Output
	Log To Console    ${OUTPUT}

<filename.txt> - имя файла с расширением (относительный путь), который будет использоваться командой/процессом. Файл лежит там же где и файл теста, например в /User/username/Documents
${PASSWORD} - перед выполнением команды нужно ввести пароль, аргумент для Start Process

Если использовать библиотеку OperatingSystem, то почему-то в консоль при выполнении теста выводится запрос пароля, но тестом этот пароль не вводится - мне нужно его вручную вводить. Баг или что-то делаю не так? Вроде же указано что вводить.

Если использую библиотеку Process, то получаю ошибку в тесте “OSError: [Errno 2] No such file or directory”. Пусть уже пробовался разнообразный, относительный, абсюлютный и с ./
Подскажите пожалуйста что делаю не так.

Нужно ввести команду в консоли, которая требует указания файла с которым работать и ввода пароля администратора Mac. Log To Console вызываю чтоб увидеть какой будет ответ.

Не думаю что таким образом Start Process скушает пароль. Нужно что то вроде такого:

echo <PASSWORD> | sudo -S <COMMAND> <ARG_1> <ARG_2> ... <ARG_N>

P.S.: По идее должен канать и полный путь и ~/

1 лайк

Спасибо! Добавление -S решило проблему с вводом пароля (теперь не требуется), но могу такое использовать только в OperatingSystems, где StartProcess deprecated. А через библиотеку Process всё равно путь к файлу не определяется, видимо какой-то баг. Пока буду использовать OperatingSystems.