订阅以获取在Robot框架MQTT库中不起作用的消息



我是Robot框架和MQTT的新手。我提出了一个使用mosquito的订阅者/发布者设置。我已经编写了一个代码来发布到订阅的主题。发布的代码运行良好,我可以在订阅者窗口中看到输出。然而,订阅关键字对我不起作用。

我已经尝试了订阅、订阅和验证。对于前者,我得到Messages=[],对于后者,"预期的有效负载没有到达主题中"。附上了代码的屏幕截图。

Subscribe and get messages
Subscribe   MQTTtest2   qos=2   timeout=1   limit=0
I Publish an MQTT request
${messages}=    Subscribe   MQTTtest2   qos=2   timeout=5   limit=0
log to console  Messages=${messages}
I Publish an MQTT request
connect   127.0.0.1
publish  MQTTtest2   testmessage  2  ${false}
disconnect
MQTT_SUBSCRIBE_AND_VALIDATE
[Tags]  mqtt
[Setup]     Connect     127.0.0.1
I SUBSCRIBE to a Topic
[Teardown]  Disconnect
I SUBSCRIBE to a Topic
#connect  ${MQTT.hostname}
subscribe and validate  ${MQTT.topic}  ${MQTT.qos}  ${MQTT.message}  5
#disconnect

你能告诉我我做错了什么吗?订阅发布

订阅和验证现在似乎可以工作了。

*** Variable ***
${mqtt-server}   127.0.0.1
${mqtt-path}    ABCD
${message-payload}  MQTT-Test-2.robot payload1 test message from RobotFramework
${message-payload2}  MQTT-Test-2.robot payload2 test message from RobotFramework
*** Keywords ***
Subscribe And Get Messages
Subscribe   topic=${mqtt-path}  qos=2   timeout=5   limit=0
#I Publish An MQTT Request
Publish     topic=${mqtt-path}    message=${message-payload}
${messages}=    Subscribe    topic=${mqtt-path}   qos=1   timeout=5   limit=0
Log To Console  Messages=${messages}
Subscribe And Validate Messages
Subscribe   topic=${mqtt-path}  qos=2   timeout=5   limit=0
#I Publish An MQTT Request
Publish     topic=${mqtt-path}    message=${message-payload2}    
${messages}=    Subscribe And Validate    topic=${mqtt-path}   qos=1   timeout=5    payload=${message-payload2}
Log To Console  Messages=${messages}    
Publish An MQTT Request
Publish     topic=${mqtt-path}    message=${message-payload}
*** Test Cases ***
MQTT test
[Tags]  mqtt
[Setup]  Connect    127.0.0.1
Publish An MQTT Request
Subscribe And Get Messages
Subscribe And Validate Messages
[Teardown]  Disconnect

=================================================

MQTT测试-3::这是一个MQTT测试项目:MQTT测试-2.robot,它探索

MQTT测试。。Messages=["MQTT-Test-2.robot payload1来自RobotFramework的测试消息"].Messages=无

MQTT测试|通过|

MQTT测试-3::这是一个MQTT测试项目:MQTT测试-2.robot…|通行证|1次关键测试,1次通过,0次失败

共1次测试,1次通过,0次失败

如果订阅操作也使用Connect关键字,则必须连接到代理。

当前,您尚未在任何Subscribe关键字之前建立连接。在您的I Publish an MQTT request中,您进行了一次连接以便成功,但随后您也进行了断开连接以便下一次订阅再次失败。

如果你这样修改你的测试:

*** Keywords ***
Subscribe And Get Messages
Subscribe   topic=MQTTtest2   qos=2   timeout=5   limit=0
I Publish An MQTT Request
${messages}=    Subscribe   topic=MQTTtest2   qos=2   timeout=5   limit=0
Log To Console  Messages=${messages}
I Publish An MQTT Request
Publish  topic=MQTTtest2   testmessage  2  ${false}
*** Test Cases ***
MQTT test
[Tags]  mqtt
[Setup]     Connect     127.0.0.1
Subscribe And Get Messages
[Teardown]  Disconnect

它应该正常工作:

==============================================================================
Robot Framework.My Test
==============================================================================
MQTT test                                                             .Messages=[b'testmessage']
MQTT test                                                             | PASS |

而且,MQTT库似乎与每个Connect一起注册为一个新客户端,因此,如果您为每个订阅和发布分别进行连接/断开连接,那么这可能不会像您所期望的那样对您起作用。

相关内容

最新更新