摄像头小程序实时预览出图时间统计工具
本项目用于测试摄像头小程序实时预览出图时间,并将每次测试的结果(含不出图的情况)汇总成友好的报表和明细列表,便于后续分析。
功能概览
- 自动化触发播放/出图:利用
uiautomator2控制设备进入指定摄像头预览并点击播放按钮。 - 黑屏检测:通过裁剪预览区域并计算平均亮度,判断是否真正出图。
- 耗时统计:多次执行测试,将成功与失败(不出图)记录到列表。
- 结果导出:以文本或 CSV 形式保存统计结果,包含平均值、最大/最小值、不出图率等指标。
目录结构
anjia_test/
├── anjia_test/ # 可发布的 Python 包(导入名:anjia_test)
│ ├── __init__.py
│ ├── cli.py # 命令行入口:anjia-test
│ └── utils/
│ ├── notify_wx.py
│ ├── time_count.py
│ └── time_statistic.py
├── requirements.txt # 依赖包
├── pyproject.toml # 打包/发布配置
└── README.md
环境要求
- Python 3.9+
- 已开启调试模式并能通过 USB/Wi-Fi 连接的安卓设备
- 电脑端安装了与设备匹配的 ADB 驱动
安装依赖
pip install -r requirements.txt
快速开始
- 连接设备:确保安卓设备与电脑连接,
uiautomator2能够正常识别。 - 安装(开发模式):
pip install -e .
- 启动命令行工具:
anjia-test -c 10 -n "单目摄像头A" -t 30 -f csv -o result/test.txt -w "<wecom_webhook>"
- 查看输出:程序会在控制台打印每次测试的耗时,并在
result/目录下生成带时间戳的统计文件(文本或 CSV)。
命令行参数
命令入口为 anjia-test,核心参数如下(完整列表见 anjia_test/cli.py):
-c/--count:测试次数。-n/--camera_name:摄像头名称,若不传且配置文件中配置了元素/坐标,则会自动读取。-t/--overdue_time:单次测试的最长等待时间(秒)。-f/--file_format:统计结果格式,text或csv。-s/--serial:指定设备序列号 / IP,默认连接首个设备。-q/--quiet:加上该参数则不推送企业微信通知。-C/--config:显式指定配置文件路径(相对路径相对于当前工作目录解析)。-l/--load_time:从设备列表进入预览后等待界面加载的时间(秒)。
示例:
anjia-test -c 5 -n "单目摄像头A" -s 192.168.3.19 \
-C default_config.yaml -l 2.0 -f csv -o result/cameraA.csv
配置文件与自定义
anjia_test/utils/config.py 会在启动时先加载包内 default_config.yaml,再尝试合并当前工作目录下的 anjia_config.yaml。你也可以:
anjia-test config导出一份默认配置(如需覆盖已有文件加--force)。- 参照导出的 YAML 修改坐标、元素定位、
log_level等字段。 - 运行命令时通过
-C指定任意配置文件(支持相对/绝对路径)。
程序会打印“✅ 已加载配置文件:xxx”作为提示;若格式错误或路径不存在,会直接中止并提示原因。
日志配置
anjia_test/utils/logger_config.py默认根据配置文件中的log_level(或环境变量LOG_LEVEL)初始化 Loguru。- 日志默认写入
logs/目录,文件名形如anjia-test_2023-01-01.log;可通过LOG_DIR、LOG_NAME等环境变量覆盖。 - 若需要更详细的堆栈,可在配置中把
log_level设为debug,或在运行前导出LOG_LEVEL=DEBUG。
自定义用法
- 调整测试次数或最大等待时间:
from anjia_test import time_statistics, save_time_statistics import uiautomator2 as u2 d = u2.connect() time_data = time_statistics(device=d, count=5, camera_name="单目摄像头A", overdue_time=30) save_time_statistics(time_statistics=time_data, file_path="result/test.txt", format_type="csv", overdue_time=30)
- 若原始耗时单位为毫秒,可在
save_time_statistics中指定time_unit="milliseconds",函数会自动转换为秒并保持统计正确。
输出示例
生成的文本报告包含:
- 总测试次数、成功次数、不出图次数、不出图率
- 有效耗时的总计、平均值、最大值、最小值
- 每次测试的状态与原始耗时值
CSV 文件在上述内容外,还会追加原始秒值和毫秒值,方便进一步分析。
如需扩展更多指标(例如失败截图保存、AI 识别等),可基于 utils/time_count.py 与 utils/time_statistic.py 进行定制。
Metadata
Release files for anjia-test 1.0.8
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| anjia_test-1.0.8.tar.gz | 17.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| anjia_test-1.0.8-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.2 kB
Release files / anjia_test-1.0.8.tar.gz
| Download URL | anjia_test-1.0.8.tar.gz |
|---|---|
| Size | 17.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
640bfbfd78c39582683da834fdb9ad269dbba0540983b207397a722ddb64285a
|
|
BLAKE2b-256 checksum How to use checksums |
eb729a0b899079795654ec6c2bb41460b2797b4f130bb8b2cd88ede8d369546e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|
Release files / anjia_test-1.0.8-py3-none-any.whl
| Download URL | anjia_test-1.0.8-py3-none-any.whl |
|---|---|
| Size | 18.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
022f69db306ba768e385f7bc788314cb7627403d4555496a4476ae8d93af4b4e
|
|
BLAKE2b-256 checksum How to use checksums |
baa3cbf01b9daf613ae0f8c3118e0192c3b226cd36f569884435acf492fcc617
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.10
|