基于python+unittest框架的mqtt接口自动化测试

219 阅读1分钟

我正在参加「掘金·启航计划」

背景:公司产品接入了mqtt协议,需要一套自动化测试框架进行回归测试。网上找了mqtt接口测试的方法,封装了method,详细内容如下:

1.代码结构

企业微信截图_16645038254241.png

2.method文件mqtt接口测试

class Mqtt_method_info():
    def __init__(self):
        self.NAME = ReadConfig_mqtt().get_device("NAME")
        self.PASSWORD = ReadConfig_mqtt().get_device("PASSWORD")

    def mqtt_publish(self,TOPIC, msg, HOST, PORT, client_id):
        publish.single(TOPIC, json.dumps(msg), qos=1, hostname=HOST, port=PORT, client_id=client_id,
                       auth={'username': self.NAME, 'password': self.PASSWORD})

    def mqtt_subscribe(self,TOPIC, HOST, PORT):

        client_id = time.strftime('mq:test:%Y%m%d%H%M%S', time.localtime(time.time()))
        msg = subscribe.simple(TOPIC, qos=1, hostname=HOST, port=PORT, client_id=client_id,
                               auth={'username': self.NAME,'password': self.PASSWORD})

        payload_response = msg.payload.decode("utf-8")
        return payload_response

    def mqtt_automation(self,PC_ip, port, client_id,request_topic, payload_request,response_topic):
        pool = ThreadPoolExecutor(max_workers=2)
        future1 = pool.submit(self.mqtt_subscribe, response_topic, PC_ip, port)
        future2 = pool.submit(self.mqtt_publish, request_topic, payload_request, PC_ip, port, client_id)
        # print(future1.result())  #
        self.payload_response = future1.result())
        return self.payload_response