第3章 Minium框架入门
好,咱们正式开始接触 Minium 这个框架。说实话,我第一次看到这个名字的时候,还以为是某种矿物质饮料(笑)。但用下来发现,这玩意儿确实是微信小程序自动化测试的一把利器。
3.1 Minium框架介绍
Minium 是什么?说白了,它是微信官方推出的一套自动化测试框架。专门为小程序量身定做。你想想看,小程序和普通 Web 页面不一样,它有自己的渲染引擎、自己的组件体系。用 Selenium 那套去搞小程序?嗯,基本行不通。
我个人习惯把 Minium 理解为「小程序的专属司机」。它能帮你操控小程序里的各种元素——点击按钮、输入文本、滑动页面、甚至调用微信的原生能力。我在项目中遇到过最头疼的事,就是小程序里那些弹窗和授权提示。用 Minium 处理这些,反而变得很顺手。
Minium 有几个核心特点:
- 官方出品:微信团队维护,兼容性有保障
- 支持真机与模拟器:开发机、测试机都能跑
- 丰富的 API:页面跳转、数据绑定、组件操作全覆盖
- 与 Jest 深度集成:断言、报告、钩子函数一应俱全
核心概念:Minium 基于 Chrome DevTools Protocol(CDP)与小程序运行时通信。它不依赖 WebDriver,而是直接操作小程序的逻辑层和渲染层。这也是它比传统方案更稳定的原因。
3.2 安装 Minium
安装这块,我踩过不少坑。记得第一次装的时候,版本没选对,折腾了大半天。这里直接给你最稳的步骤。
环境要求
| 依赖项 | 版本要求 | 备注 |
|---|---|---|
| Python | 3.7 - 3.10 | 3.11 以上暂不支持 |
| Node.js | 12.x 以上 | 建议用 LTS 版本 |
| 微信开发者工具 | 最新稳定版 | 需开启安全模式 |
| 操作系统 | Windows / macOS | Linux 需额外配置 |
安装步骤
第一步,安装 Minium 的 Python 包。打开终端,直接跑:
pip install minium
嗯,就这么简单?别急。我建议你加上镜像源,不然下载速度会让你怀疑人生:
pip install minium -i https://pypi.tuna.tsinghua.edu.cn/simple
第二步,配置微信开发者工具。这里有个关键点——必须开启「安全模式」。你打开开发者工具,找到「设置」→「安全设置」,把「服务端口」打开。我曾经因为忘了这一步,脚本死活连不上工具,排查了半天才发现是端口没开。
小技巧:安装完成后,在终端输入 minium -v 检查版本。如果能看到版本号,说明安装成功了。看不到的话,检查一下 Python 环境变量。
验证安装
写个简单的脚本验证一下:
import minium
print(minium.__version__)
能打印出版本号,就说明环境搭好了。如果报错说找不到模块,八成是 pip 安装到了全局环境,而你用的虚拟环境。这个问题我遇到过不下三次,后来学乖了,统一用 venv 管理。
3.3 第一个 Minium 测试脚本
好,环境搭好了,咱们来写第一个脚本。别紧张,就几行代码的事。
准备测试小程序
你需要一个小程序项目。如果你手头没有现成的,可以用微信官方提供的 demo。我个人习惯在项目根目录下建一个 tests 文件夹,专门放测试脚本。
编写测试脚本
创建一个文件 test_first.py,写入以下内容:
import minium
class TestFirst(minium.MiniTest):
def test_open_page(self):
# 打开小程序首页
self.app.navigate_to("/pages/index/index")
# 等待页面加载
self.app.wait_for(2)
# 获取页面标题
title = self.app.get_current_page().data.get("title")
# 断言标题不为空
self.assertIsNotNone(title)
print(f"页面标题: {title}")
这段代码做了三件事:打开首页、等两秒、检查标题。简单吧?
运行测试
运行方式有两种。第一种,直接用 Python 跑:
python test_first.py
第二种,用 Minium 提供的命令行工具:
minium run test_first.py
我个人更推荐第二种。为什么?因为 minium run 会自动处理一些配置问题,比如自动启动开发者工具、自动连接调试端口。省心不少。
注意:运行前请确保微信开发者工具已经打开,并且当前项目就是你要测试的小程序。如果工具没打开,Minium 会尝试自动启动,但有时候会卡住。我建议你手动打开工具,这样更可控。
看看运行结果
如果一切顺利,你会看到类似这样的输出:
页面标题: 首页
.
----------------------------------------------------------------------
Ran 1 test in 3.45s
OK
看到那个 OK 了吗?恭喜你,第一个 Minium 测试脚本跑通了!
避坑指南
这里分享几个我踩过的坑:
- 端口冲突:如果你同时开了多个开发者工具实例,端口会冲突。关掉多余的,只留一个。
- 版本不匹配:Minium 版本和开发者工具版本要对应。我建议都用最新版,省事。
- 路径问题:
navigate_to里的路径要写对。小程序页面路径是相对路径,别写成绝对路径。
进阶提示:你可以在 test_first.py 里加个 setUp 方法,用来做初始化操作。比如每次测试前都清空缓存、重置数据。这样能保证测试的独立性。
好了,Minium 的入门就到这里。说实话,框架本身不复杂,复杂的是你面对的真实业务场景。但有了这个基础,后面那些复杂的操作——比如模拟登录、处理支付弹窗、测试分享功能——你都能一步步啃下来。
下一章,咱们会深入 Minium 的核心 API,看看怎么操作页面元素、怎么处理异步回调。到时候你会发现,原来小程序自动化测试也可以这么顺手。