用途:为 Home Assistant 自定义集成编写 pytest 测试。资料指出,集成质量等级(Integration Quality Scale)的 Bronze 级别要求提供测试,至少需覆盖配置流程的成功、连接失败与认证失败三种情况。
主要能力:给出测试目录结构建议,包括 conftest.py(共享 fixture)、test_config_flow.py(必需)、test_init.py、test_sensor.py、test_coordinator.py。提供 conftest.py 中 mock 客户端、mock setup entry、自动启用自定义集成等 fixture 写法,以及 MOCK_CONFIG、MOCK_DEVICE_INFO、MOCK_DATA 示例数据。配置流程测试示例断言 FlowResultType 枚举值,并假设配置流程将客户端异常映射为 errors["base"] 的 cannot_connect、invalid_auth、unknown。初始化测试示例覆盖 setup、unload 与连接失败时的 SETUP_RETRY 状态。
使用方式:安装 pytest-homeassistant-custom-component(PHACC),并固定到与目标 HA 版本匹配的版本,例如 pip install pytest-homeassistant-custom-component==<version-for-your-HA>。资料强调只装 PHACC,不要另外单独安装 pytest-asyncio,以免版本冲突。需在 pyproject.toml 的 [tool.pytest.ini_options] 中设置 asyncio_mode = "auto"(或 pytest.ini 中等价配置),否则异步测试不会被收集。运行命令:pytest tests/ -v;覆盖率命令:pytest tests/ --cov=custom_components.{domain} --cov-report=html。
关键规则:配置流程测试为 Bronze 必需;异步方法使用 AsyncMock;mock 客户端而非协调器;setup 后调用 await hass.async_block_till_done();断言 FlowResultType 枚举值而非字符串。
限制:资料未提供具体支持的 HA 版本范围、PHACC 版本号、其他质量等级要求或非 pytest 测试框架的用法。