在CodeArts TestPlan接口脚本中调用MQTTSubscribe关键字
MQTTSubscribe简介
该系统关键字支持对MQTT协议的全流程测试,用以向MQTT服务器订阅并接受消息,最后取消订阅,如果需要使用该系统关键字,需要用户将MQTT服务器开放公网访问并且将对应端口的安全组策略开启放行。
| 参数 | 是否必选 | 参数类型 | 默认值 | 描述 |
|---|---|---|---|---|
| MQTT连接标识(userId) | 是 | String | ${MQTT_USER_ID} | MQTT连接标识,作为用例的局部变量,由MQTTConnect返回并存储。 详见:MQTTConnect章节响应提取。 |
| 订阅的主题 | 是 | String | - | 需要订阅的MQTT服务器的主题。 |
| QoS级别 | 是 | String | 最多发送1次(0) | MQTT QoS级别。 |
| 响应类型 | 是 | String | Text | 消息响应类型:枚举值(Text和Binary)。支持文本(Text)或二进制(Binary)。 |
| 超时时间 | 是 | Long | - | 连接MQTT服务器超时时间,单位:MILLISECONDS。 |
| 接受消息总数 | 是 | Integer | 10 | APITest访问MQTT服务器之后保留的消息总数。 |
| 接受消息耗时 | 是 | Long | 1 | 接收消息最长的等待时间,单位:second。 |
MQTTSubscribe响应
| 参数 | 参数类型 | 描述 |
|---|---|---|
| subscribe_result | JSON | 订阅消息MQTT服务端返回值。 |
| unsubscribe_result | - | 取消订阅MQTT服务端返回值。 |
| subscribe_result.status | String | MQTT服务端响应状态。 |
| subscribe_result.message | String | MQTT服务端返回信息。 |
| subscribe_result.data | JSON | APITest定义的接口返回。 |
| data.request_begin | Long | 访问MQTT服务器的开始时间。 |
| data.response_time | Long | MQTT服务器返回响应耗费时长。 |
| data.sent_bytes | Long | 发送的字节数。 |
| data.recv_bytes | Long | 接收的字节数。 |
| data.return_code | Integer | MQTT服务器返回码。 |
| message_result | JSON | MQTT服务器订阅返回的消息,每个消息产生一条记录。 |
| message_result.status | String | MQTT获取订阅信息的状态结果。 |
| message_result.message | String | 订阅消息时MQTT服务器返回的信息。 |
| message_result.data | JSON | 订阅信息消息体。 |
| message_result.data.more_msg | Boolean | 是否还有消息等待读取,消息订阅返回完成之后为false。 |
| message_result.data.sent_bytes | Long | 发送字节数。 |
| message_result.data recv_bytes | Long | 接收字节数。 |
| message_result.data messages | JSONArray | 接收到的MQTT服务器消息。 |
| messages[0].timestamp | Long | 接收这条消息的时间点。 |
| messages[0].topic | String | 订阅的Topic。 |
| messages[0].message | String | 接收的消息内容。 |
| messages[0].qos | String | 设置的MQTT Qos级别。 |
默认检查点
| 名称 | 预期值 |
|---|---|
| 结果 | 成功 |
MQTTSubscribe使用示例
填写参数,订阅MQTT服务器:

MQTTSubscribe响应示例

{
"subscribe_result" : {
"status" : "success",
"message" : "",
"data" : {
"request_begin" : 1656937043980,
"response_time" : 37,
"sent_bytes" : 13,
"recv_bytes" : 5,
"return_code" : 0
}
},
"message_result" : {
"status" : "success",
"message" : "",
"data" : {
"more_msg" : false,
"sent_bytes" : 0,
"recv_bytes" : 35,
"messages" : [ {
"timestamp" : 1656937044017,
"topic" : "test01",
"message" : "This is a test message!",
"qos" : 0
} ]
}
},
"unsubscribe_result" : {
"status" : "success",
"message" : "",
"data" : {
"request_begin" : 1656937044034,
"response_time" : 0,
"sent_bytes" : 10,
"recv_bytes" : 4,
"return_code" : 0
}
}
}