我在这里真是摸不着头脑,试图为我创建的一个类编写一个环回测试,结果出现了一些奇怪的行为。持有队列的类似乎相当高兴,可以将数据放入其队列中。但是调用该类的函数似乎并不认为队列中有任何内容。由于这是一个独立的单元测试,没有其他任何东西试图访问此队列
代码看起来像这样
#mymqtt.py
import paho.mqtt.client as mqtt
import Queue
class mqttcomms:
def __init__(self, address, topiclist, monitorlist):
# ....
self.msgqueue = Queue.Queue()
# ....
def on_message(self, client, userdata, msg):
# .... something that creates;
newmsg = ['something','in','here']
self.msgqueue.put(newmsg)
print 'Message put in queue: ' + str(not(self.msgqueue.empty()))
# tests.py
import mymqtt
# ....
minortest('Basic Loopback')
############## Basic Loopback ##############
testMQserver = 'localhost'
topiclist = ['test']
monitorlist = ['var1', 'var2']
mqttComms = mymqtt.mqttcomms(testMQserver, topiclist, monitorlist)
message = 'Hello'
mqttComms.publishmessage(topiclist[0], monitorlist[0], message)
message_ok = False
time.sleep(5)
print 'Message in Queue: ' + str(not(mqttComms.msgqueue.empty()))
while not mqttComms.msgqueue.empty():
print 'Something in Queue'
msg = mqttComms.msgqueue.get()
print msg
checks = 0
if msg[0] == topiclist[0]:
checks += 1
if msg[1] == monitorlist[0]:
checks += 1
if msg[2] == message:
checks += 1
if checks == 3:
message_ok = True
我得到的是
BASIC LOOPBACK
MQTT: Connected to Server
MQTT: Published Hello to /test/var1
MQTT: Msg Received: test/var1 Hello
Message put in queue: True
Message in Queue: False
有什么想法吗?如果有人能解释为什么会发生这种情况,我将非常感激,提前谢谢
目前没有回答
相关问题 更多 >
编程相关推荐