Суть теста:
- подключиться по ssh к некоторому хосту
- запустить на том хосте скрипт, который работает в режиме консольного диалога
- автоматически дать ответы на вопросы скрипта
- вернуть полученный конечный результат
Примером может служить запуск интерпретатора пайтон на удаленном хосте.
Или единственный возможный вариант - это написать свой скрипт с использованием pxssh и подключить к роботу как библиотеку?
А можно пример реализации такого интерактива? Я долго изучал эту библиотеку, но не смог реализовать.
Ага, Я понял! Я просто использовал старую версию! А здесь можно с Write и Read это всё реализовать. Большое спасиб!
Да, например, так
SSHTest
Open Connection server
Login mylogin mypassword
${in1}= Write python
Log to console in1=${in1}
Set Client Configuration prompt=>>>
${out1}= Read Until Prompt
Log to console out1=${out1}
${in2}= Write print "Hello"
Log to console in2=${in2}
${out2}= Read Until Prompt
Log to console out2=${out2}
Close All Connections
Output:
in1= python
out1=Python 2.6.6 (r266:84292, May 1 2012, 13:52:17)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
in2= print "Hello"
out2=Hello
>>>
Разве что может быть неудобно попадание prompt в out
Есть ещё одна интересная проблемка, промпты проходят, но, иногда не возвращает output.
*** Settings ***
Library OperatingSystem
Library SSHLibrary timeout=5s
Test Teardown Close All Connections
*** Test Cases ***
Verify SSH Prompts Verify Prompts
*** Keywords ***
Verify Prompts
Open Connection ${HOST}
Login ${USERNAME} ${PASSWORD}
Write python /home/${USERNAME}/work/python/robotframework/prompts.py
${output}= Read
Log To Console ${output}
Write testuser
${output}= Read
Log To Console ${output}
Write testpass
${output}= Read
Log To Console ${output}
Тестируется вот такой простой скрипт:
username = raw_input('Enter username: ')
password = raw_input('Enter password: ')
print "I've got your credentials! Ha-hahaha!"
Иногда output есть, а иногда нет, с чем это может быть связано?
Я понял! И это тоже понял! Иногда, задержки бывают, добавил delay=0.5s и проходит. Очевидно, что действительно хороший пример - Read Until Prompt