订阅以获取在机器人框架 MQTT 库中不起作用的消息
Subscribe to get messages not working in Robot framework MQTT Library
我是机器人框架和 MQTT 的新手。我已经使用 mosquitto 进行了 subscriber/publisher 设置。我写了一个代码来发布到一个订阅的主题。 Publish 的代码运行良好,我能够在订阅者 window 中看到输出。但是,订阅关键字对我不起作用。
我已经尝试过订阅和订阅并验证。对于前者,我得到 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
你能告诉我我做错了什么吗? Subscribe
Publish
在订阅操作的情况下,您也必须使用 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
中注册为新客户端,因此如果您为每个订阅和发布单独 connect/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-Test-3 :: 这是一个 MQTT 测试项目:MQTT-Test-2.robot 探索...
MQTT 测试..Messages=['MQTT-Test-2.robot payload1 test message from RobotFramework']
.Messages=None
MQTT 测试 |通过 |
MQTT-Test-3 :: 这是一个 MQTT 测试项目:MQTT-Test-2.robot that... |通过 |
1 项关键测试,1 项通过,0 项失败
1 次测试,1 次通过,0 次失败
我是机器人框架和 MQTT 的新手。我已经使用 mosquitto 进行了 subscriber/publisher 设置。我写了一个代码来发布到一个订阅的主题。 Publish 的代码运行良好,我能够在订阅者 window 中看到输出。但是,订阅关键字对我不起作用。
我已经尝试过订阅和订阅并验证。对于前者,我得到 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
你能告诉我我做错了什么吗? Subscribe Publish
在订阅操作的情况下,您也必须使用 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
中注册为新客户端,因此如果您为每个订阅和发布单独 connect/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-Test-3 :: 这是一个 MQTT 测试项目:MQTT-Test-2.robot 探索...
MQTT 测试..Messages=['MQTT-Test-2.robot payload1 test message from RobotFramework'] .Messages=None
MQTT 测试 |通过 |
MQTT-Test-3 :: 这是一个 MQTT 测试项目:MQTT-Test-2.robot that... |通过 | 1 项关键测试,1 项通过,0 项失败