Простое тестовое соединение с помощью инструмента "nc" с использованием Robotframework? - PullRequest
0 голосов
/ 22 октября 2018

Я пытаюсь выполнить простой тестовый тест соединения в Robotframework между двумя IP-адресами в одной сети.Я пытаюсь достичь:

  1. С одной стороны, Выполнить команду echo Hello |nc -l 51111
  2. , чтобы перехватить сообщение «Hello» на другом: выполнить команду 'nc ip 51111'

, используя стандартный инструмент netcat.

Для этого я запускаю Test Script.robot:

Library                Process
Library                SSHLibrary
Suite Setup            Open Connection And Log In
Suite Teardown         Close All Connections

*** Variables ***
${HOST}                ip.my.dev.vm
${USERNAME}            user 
${PASSWORD}            password
${HOST_PDG}            ip.server1
${HOST_IDPF}           ip.server2

*** Test Cases ***
Step 1 Connect Server1 and send Hello to space 
  Open Connection And Log In Server1
  ${output}=          Execute Command    'echo Hello | nc -l 51111'
  Should Not Be Equal    ${output}         Hello

Step 2 Connect to Server2 and retrieve Hello 
  Open Connection And Log In Server2
  ${output}=         Execute Command    'nc ip.server2 51111'
  Should Be Equal    ${output}       Hello  

*** Keywords ***
Open Connection And Log In
 Open Connection     ${HOST}
 Login               ${USERNAME}        ${PASSWORD}  
Open Connection And Log In Server1
Open Connection     ${HOST_PDG}
 Login               ${USERNAME}        ${PASSWORD}
Open Connection And Log In Server2
 Open Connection     ${HOST_IDPF}
 Login               ${USERNAME}        ${PASSWORD}

Этот сценарий останавливается после первого пройденного шага тестирования, и с сервера Server2 я так и не смог перехватить это сообщение Hello.

Тот же тест в командной строке с помощью инструмента nc работает отлично.

  1. ssh Server1
  2. echo Hello |nc -l 51111
  3. ssh Server2
  4. nc ip.server2 51111 (см. сообщение Hello)

В чем проблема сделать это через ROBOT Framework?

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 23 октября 2018

... и я обнаружил, что ... Без значительного изменения исходного сценария, если кавычки вокруг обеих команд удаляются, и вместо команды «Выполнить» используется команда «Пуск» на стороне слушателя (как у Тодора).предложил, спасибо!), скрипт будет работать как есть, давая правильные результаты.

0 голосов
/ 23 октября 2018

Проблема, с которой вы сталкиваетесь, заключается в том, что выполнение роботизированной системы является последовательным, а ваша цель подразумевает параллелизм - после запуска сервера netcat на сервере Server1, параллельно вы хотите подключиться к нему с сервера Server2.

Это то, что вы делаете, когда вы делали это вручную, но это не то, что происходило в случаях RF: в рамках, вы выполнили тест 1, он выполнил свои шаги и закончил (снекоторые проходят / не проходят, но это сейчас не важно).Когда это было сделано, служба не работала;поэтому, когда в тесте 2 вы пытались подключиться к нему - он по праву потерпел неудачу.

Вот что вы можете сделать - заставить два шага (запуск службы и подключение к ней) выполняться параллельно.Самый простой способ - это быть в том же случае;и для того, чтобы служба работала в фоновом режиме, вы должны использовать не Execute Command - который ожидает завершения своей цели, а Команда запуска , которая запускает ее в фоновом режиме, немедленно возвращает.
Ееиспользование немного отличается, с точки зрения получения вывода и связи с ним, вы можете прочитать, как в документе.

...