Robot Framework-从自定义关键字返回值

时间:2018-10-08 09:29:36

标签: python return-value robotframework

我遇到这个问题,我需要返回由我创建的自定义关键字生成的值。

我有两个关键字Get DataVerify 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方法/关键字返回值?

EDIT 我正在Verify Signal R内打印消息,但是当我尝试仅调用get data时就会打印出消息您可以在日志中看到一个空字段那是因为get data使用了Verify Signal R的生成值,并且如果我只是按预期将get data方法调用为空,那么我将尝试验证get data不为空,我从服务器收到一条消息。

希望更清晰

4 个答案:

答案 0 :(得分:0)

您需要使用Log关键字在日志中打印值。 http://robotframework.org/robotframework/latest/libraries/BuiltIn.html#Log

答案 1 :(得分:0)

我可能很难理解您的问题,因为我看不到任何奇怪的行为。我将从头开始。

  1. 关键字get data不显示任何内容,因为${Notification}变量从一开始就为空,并且从未被修改。
  2. 我假设在使用关键字verify signal r的情况下您拥有Notification received: {....},因为presenceservice1.client.on('StaffPresenceNotified', get_data)调用了get_data并带有一些参数

答案 2 :(得分:0)

我通过创建另一种方法并使用global传递数据来解决了此问题

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


def print_data(self):

    print(var2)

答案 3 :(得分:0)

我不确定您是否要这样做。 只需在关键字前面添加 $ {data} = (可以选择是否使用'='都可以)

*** Keywords ***

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