# 自动化测试脚本 **Repository Path**: xjl_harder/automated-testing-script ## Basic Information - **Project Name**: 自动化测试脚本 - **Description**: 111212356t6 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-12-04 - **Last Updated**: 2026-04-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Robot Framework 集成 Do1e/mijia-api 使用说明 本仓库提供一个基于 [Do1e/mijia-api](https://github.com/Do1e/mijia-api) 的 Robot Framework 自定义库,支持以 DID 和 miot 的 siid/piid/aiid 直接操作米家设备;并兼容少量基于属性名/动作名的旧接口(已不推荐)。 ## 功能亮点 - 认证与初始化:从 `config/auth.json` 读取认证信息,或扫码登录后保存。 - 设备操作(推荐):基于 siid/piid/aiid 的强类型关键字。 - DID 优先:通过唯一 DID 选择设备,避免同名冲突。 - 查询能力:设备/家庭/场景列表,统计、耗材查询,原始批量属性读写。 - 兼容旧接口:保留基于属性名/动作名的方法,并给出迁移提示。 ## 目录结构 ``` . ├─ config/ │ └─ auth.json # 认证文件(建议放这里) ├─ libs/ │ └─ MijiaLibrary.py # Robot Framework 自定义库 ├─ tests/ │ └─ mijia_smoke.robot # 简单冒烟用例 └─ requirements.txt # 依赖 ``` ## 环境准备 - Python 3.10+(建议 3.11/3.12) - Windows PowerShell(本项目用例在 PowerShell 下验证) 安装依赖(可在虚拟环境中执行): ```powershell pip install -r requirements.txt ``` `requirements.txt` 包含: - robotframework - mijiaAPI ## 获取认证 你可以直接放置有效的 `config/auth.json`,或通过扫码登录生成: Robot Framework 示例(一次性生成) ```robot *** Settings *** Library libs/MijiaLibrary.py *** Test Cases *** 扫码登录并保存认证 QR Login And Save Auth config/auth.json ``` 生成后,后续用例可直接使用 `Init Mijia API config/auth.json`。 ## 快速开始 一个最小可运行的示例(以 DID 操作设备,并用 siid/piid/aiid 访问属性与动作): ```robot *** Settings *** Documentation Mijia API Smoke Tests Library libs/MijiaLibrary.py Library BuiltIn *** Variables *** ${AUTH_PATH} config/auth.json ${DID} 123456789 # 你的设备 DID(唯一) *** Test Cases *** 初始化并检查可用性 ${ok}= Init Mijia API ${AUTH_PATH} Should Be True ${ok} ${avail}= Is API Available Should Be True ${avail} 按 DID 选择设备并读取/设置属性 ${selected}= Run Keyword And Return Status Select Device By Did ${DID} Run Keyword If not ${selected} Fail 未找到 DID: ${DID} # 读取属性(示例:siid=2, piid=1 通常是开关) ${on}= Get Device Property By Id 2 1 ${DID} Log 当前开关: ${on} # 设置属性(示例:brightness,siid=2, piid=2) ${ok}= Set Device Property By Id 2 2 50 ${DID} Should Be True ${ok} # 运行动作(示例:切换开关 aiid=1) ${ok}= Run Device Action By Id 2 1 ${EMPTY} ${DID} Should Be True ${ok} # 等待属性达成(等待亮度=50) ${ok}= Wait Until Device Property By Id 2 2 50 timeout=30 interval=1.0 did=${DID} Should Be True ${ok} ``` > 提示:siid/piid/aiid 因设备型号不同而不同,请参考下文“如何查找 siid/piid/aiid”。 ## 常用关键字速查 - 登录/初始化 - QR Login And Save Auth auth_path? - Init Mijia API auth_path? | auth_json? - Is API Available - 设备/家庭/场景 - List Devices - List Homes - List Scenes home_id - Run Scene scene_id_or_name home_id? - 设备选择(推荐 DID) - Select Device By Did did sleep_time=0.5 - Select Device By Name dev_name sleep_time=0.5 - 强类型设备操作(推荐) - Get Device Property By Id siid piid did? - Set Device Property By Id siid piid value did? - Run Device Action By Id siid aiid inputs? did? - Wait Until Device Property By Id siid piid expected timeout=30 interval=1.0 did? - 兼容旧接口(不推荐,仅兼容) - Get Device Property prop_name dev_name? did? - Set Device Property prop_name value dev_name? did? - Run Device Action action_name value? dev_name? did? - 高级能力 - Get Devices Prop Raw data(list of {did, siid, piid}) - Set Devices Prop Raw data(list of {did, siid, piid, value}) - Get Statistics data(dict) - List Consumable Items home_id owner_id? - Get Device Info From Spec model ## 如何查找 siid/piid/aiid 1) 通过设备 `model` 查询 miot-spec: - 打开 https://home.miot-spec.com/spec/{model} - 在页面中查找对应服务(siid)和属性/动作(piid/aiid) 2) 通过库获取(需要设备型号) ```robot *** Test Cases *** 查看设备规格 Init Mijia API config/auth.json ${devices}= List Devices ${model}= Set Variable ${devices[0]['model']} ${spec}= Get Device Info From Spec ${model} Log ${spec} ``` > 提示:设备列表 `List Devices` 的条目通常包含 `did`, `name`, `model` 等字段。 ## 运行测试 ```powershell robot -d .\reports .\tests\mijia_smoke.robot ``` 生成报告在 `reports/` 目录,打开 `log.html` 查看详细关键字执行与日志。 ## 常见问题(FAQ) - ImportError: No module named 'mijiaAPI' - 请先 `pip install mijiaAPI`,或执行 `pip install -r requirements.txt`。 - Is API Available 返回 False 或认证错误 - `auth.json` 过期或无效;使用“QR Login And Save Auth”重新登录,或更新 `auth.json`。 - Select Device By Did 报“未找到 DID” - 确认 DID 填写正确;可先 `List Devices` 并在日志/报告中查找对应条目。 - Run Scene 按名称运行失败 - 需要提供 `home_id` 供名称匹配;建议直接使用 `scene_id`。 - Set/Get/Run By Id 失败(code != 0) - 检查 siid/piid/aiid 是否与设备规格匹配;值类型是否正确(库会做基础类型转换:bool/int/float/str)。 ## 备注 - 建议优先使用 DID 与 siid/piid/aiid 的“By Id”系列关键字,稳定且可读。 - 旧接口仅为兼容存在,后续可以逐步迁移到 By Id。 - 如需新增便捷关键字(例如“按房间+名称解析 DID”),欢迎提需求。