Robot Framework - вернуть значение из пользовательского ключевого слова - PullRequest
0 голосов
/ 08 октября 2018

У меня есть проблема, когда мне нужно вернуть значение, которое создается с помощью созданного мной пользовательского ключевого слова.

У меня есть два ключевых слова Get Data и Verify Signal R Я создаю значение в Verify Signal R Ключевое слово, которое вызывает функцию Получить данные, мне нужно убедиться, что я получил какое-то сообщение здесь, это код

def get_data(notificaition):
    print("Notification Recived: ", notificaition)
    return notificaition

def verify_signal_r():

    print(connection)
    presenceservice1.client.on('StaffPresenceNotified', get_data)
    connection.wait(15)
    return presenceservice1

А затем мои Ключевые слова

*** Variables ***

${Notification}

*** Keywords ***

Verify Notification Was Displayed
    get connection
    Doctor Has Entered The Room
    verify signal r
    get data  ${Notification}

, а затеммой журнал

enter image description here

Как видите, я печатаю сообщение в ключевом слове Verify Singal R, но данные для получения пусты, как я могу вернуть значение?из метода / ключевого слова python?

РЕДАКТИРОВАТЬ Я печатаю сообщение внутри Verify Signal R, но когда я пытаюсь просто вызвать get data, который печатаетсообщение Я получаю пустое поле, как вы можете видеть в моем журнале. Это потому, что get data использует сгенерированное значение из Verify Signal R, и если я просто вызываю метод get data, то он пуст, как и ожидалось, я пытаюсь проверить, что данныене пустой, и я получил сообщение от подачир.

Надеюсь, что это проясняет

Ответы [ 4 ]

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

Я не уверен, хочешь ли ты этого.Просто добавьте $ {data} = перед вашим ключевым словом (с / без '=' оба штрафа) * ​​1005 *

*** Keywords ***

Verify Notification Was Displayed
    get connection
    Doctor Has Entered The Room
    verify signal r
    ${data}=  get data  ${Notification}
    Log  ${data}
0 голосов
/ 08 октября 2018

Возможно, я изо всех сил пытаюсь понять вашу проблему, потому что я не вижу странного поведения.Начну с конца.

  1. Ключевое слово get data ничего не печатает, потому что переменная ${Notification} пуста с самого начала и никогда не изменялась.
  2. Я предполагаю, что в случае ключевого слова verify signal r у вас есть Notification received: {....} потому что presenceservice1.client.on('StaffPresenceNotified', get_data) вызывает get_data с некоторым аргументом
0 голосов
/ 10 октября 2018

Я исправил эту проблему, создав другой метод и используя global для передачи данных

def get_data(self, notification):
    global var2
    var2 = notification
    print("Message Received From Client!")


def print_data(self):

    print(var2)
0 голосов
/ 08 октября 2018

Вам необходимо использовать ключевое слово Log, чтобы напечатать значение в журнале.http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Log

...