跳过主要内容

pytest-mqtt支持基于MQTT的系统测试

项目描述


CI outcome Test suite code coverage Project license PyPI downloads per month Supported Python versions Project status (alpha, beta, stable) Package version on PyPI

关于

pytest-mqtt 通过为pytest提供测试固件,支持基于MQTT的系统测试。它是为精细的terkin-dataloggermqttwarn程序而设计的。

capmqtt 固件

捕获MQTT消息,使用Paho MQTT Python客户端,类似于caplogcapsys。它也可以用于发布MQTT消息。

MQTT服务器的主机和端口可以通过pytest命令行参数配置:--mqtt-host--mqtt-port。默认值是localhost/1883

mosquitto fixture

Mosquitto MQTT代理作为会话范围内的fixture提供给测试用例。

用法

import pytest
from pytest_mqtt.model import MqttMessage

@pytest.mark.capmqtt_decode_utf8
def test_mqtt_send_receive(mosquitto, capmqtt):
    """
    Basic send/receive roundtrip, using text payload (`str`).

    By using the `capmqtt_decode_utf8` marker, the message payloads
    will be recorded as `str`, after decoding them from `utf-8`.
    Otherwise, message payloads would be recorded as `bytes`.
    """

    # Submit a basic MQTT message.
    capmqtt.publish(topic="foo", payload="bar")

    # Demonstrate the "messages" property.
    # It returns a list of "MqttMessage" objects.
    assert capmqtt.messages == [
        MqttMessage(topic="foo", payload="bar", userdata=None),
    ]

    # Demonstrate the "records" property.
    # It returns tuples of "(topic, payload, userdata)".
    assert capmqtt.records == [
        ("foo", "bar", None),
    ]

可以通过三种方式启用capmqtt_decode_utf8设置。

  1. 在会话范围内,通过pytestconfig选项,例如在conftest.py中。

    @pytest.fixture(scope="session", autouse=True)
    def configure_capmqtt_decode_utf8(pytestconfig):
        pytestconfig.option.capmqtt_decode_utf8 = True
  2. 在模块级别,只需在文件顶部声明capmqtt_decode_utf8 = True

  3. 在单个测试用例中作为测试用例标记,使用@pytest.mark.capmqtt_decode_utf8

问题

  • mosquitto fixture当前不支持身份验证或加密。

  • capmqtt应该只能捕获指定主题的消息。

开发

git clone https://github.com/mqtt-tools/pytest-mqtt
cd pytest-mqtt
python3 -m venv .venv
source .venv/bin/activate
pip install --editable=.[test,develop]
poe test

项目信息

贡献

欢迎各种贡献、反馈或补丁。如果您认为我们应该包含新功能,或者报告或修复错误,请创建问题或提交补丁。

资源

许可协议

该项目根据MIT许可证的条款进行许可,请参阅LICENSE

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

pytest_mqtt-0.4.2.tar.gz (10.6 kB 查看哈希值)

上传时间

构建分发

pytest_mqtt-0.4.2-py3-none-any.whl (9.3 kB 查看哈希值)

上传时间 Python 3

支持者