Как заставить Robotframework (в Eclipse) ответить на приглашение терминала - PullRequest
1 голос
/ 05 июня 2019

В настоящее время я использую Robotframework в Eclipse на ОС Windows 10.Я использую внешнюю библиотеку Python, которая позволяет ученикам и преподавателям использовать эту извлеченную библиотеку для подключения к нашим аппаратным устройствам.Я автоматизирую извлечения из основного пакета сайта, сделанные нашими разработчиками.Если к USB-портам ПК подключено более одного устройства, код выполняет следующие действия:

x = input («Выберите одно устройство:»)

selected = int (x)

Это вызывает запрос терминала, поэтому пользователь должен ввести, например, 0 или 1, а затем нажать клавишу ВВОД.Ответ пользователя позволит коду продолжить обработку соединения с выбранным устройством.Обратите внимание, это приглашение не является графическим интерфейсом.Поэтому, когда я запускаю Robotframework, он выполняет шаги вплоть до того момента, когда он запрашивает.

Кажется, это должно быть довольно легко, но я не могу понять это.Поскольку вы находитесь внутри фрагмента кода, который ожидает ввода, как вы заставляете RobotFramework что-то с ним делать?

Редактировать: Мне приходит в голову, что, возможно, есть способ выполнить отложенный шаг Robotframework, который запускает внешнюю команду python через определенное время, чтобы сгенерировать '0' и ответ клавиши RETURN.У меня был файл python, сделанный из импорта библиотеки pynput.py, которая, кажется, работает из командной строки (выводит 0 или 1 и перевод строки).Должен быть более простой способ, я думаю, но я не знаю, что это такое.

Редактировать: Могу ли я запустить ключевое слово из прослушивателя, который следит за командной строкой, а ключевое слово запускает другой файл python для подачи приглашения?Если я заставлю это работать, то все, что мне нужно сделать, это оставить устройства на USB-порту (или, если на то пошло, концентратор) и выбрать устройства, на которых я хочу провести дальнейшее тестирование.Наши устройства также поддерживаются Blooth tooth, но мне нужно выполнить тесты USB и BLE, чтобы проверить наши извлечения Python, которые могут использовать учителя и ученики.

Редактировать: Другой вариант - использовать программно-программируемый концентратор и выбрать USB-порт с определенным устройством, но я стараюсь этого избегать.

1 Ответ

2 голосов
/ 06 июня 2019

ОК, я решил это, используя фоновый процесс Robotframework.Я написал небольшой файл Python, который запускается из процесса.Он имеет 5-секундный таймер (больше, чем мне нужно), а затем Robotframework запускает следующий шаг Test Case.Затем файл Python выполняет несколько нажатий на клавиатуру, выбирая порт и клавишу ВВОДА, которая выходит на консоль (передавая приглашение ввода).Он подключает датчик.

Итак, в моем тестовом примере Robotframework я делаю следующее:

*** Test Case ***
smoke_test
    Start process .   Python .   usbportselect
    open usb

Программа Python, вызываемая из процесса, выглядит следующим образом:

import time
import pynput
from pynput.keyboard import Key, Controller
keyboard = Controller()

def choose_usb(portvalue)
    keyboard.press(portvalue)
    keyboard.release(portvalue)
    keyboard.press(Key.enter)
    keyboard.release(Key.enter)

time.sleep(5)
choose_usb('0')

Примечание: I 'Я уверен, что это не решит все проблемы с использованием процессов, но это по крайней мере начало и способ подачи входных данных в подсказку, полученную в результате следующего шага тестового примера

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...