学习笔记——测试进阶之路 工作笔记:基于微信 minium 框架的小程序自动化初步实践(1)
minium 框架
框架优点
- 微信小程序官方推出的小程序自动化框架,是为小程序专门开发的自动化框架, 提供了 Python 和 JavaScript 版本。
- 支持一套脚本,iOS & Android & 模拟器,三端运行
- 提供丰富的页面跳转方式,看不到也能去得到
- 可以获取和设置小程序页面数据,让测试不止点点点
- 支持往 AppSerive 注入代码片段
- 可以使用 minium 来进行函数的 mock, 可以直接跳转到小程序某个页面并设置页面数据, 做针对性的全面测试
框架缺点
- 暂不支持 H5 页面的调试;
- 暂不支持插件内 wx 接口调用;
技术选型
- minium 支持 Python 和 JavaScript 版本,而且有专门的团队定期维护,遇到问题可以在微信开发者社区进行提问,因此选择了 minium。
minium 框架介绍
- minium 提供一个基于 unittest 封装好的测试框架,利用这个简单的框架对小程序测试可以起到事半功倍的效果。
- 测试基类 Minitest 会根据测试配置进行测试,minitest 向上继承了 unittest.TestCase,并做了以下改动:
- 加载读取测试配置
- 在合适的时机初始化 minium.Minium、minium.App 和 minium.Native
- 根据配置打开 IDE,拉起小程序项目和或自动打开真机调试
- 拦截 assert 调用,记录检验结果
- 记录运行时数据和截图,用于测试报告生成
- 使用 MiniTest 可以大大降低小程序测试成本。
Properties
名称类型默认值说明
- appminium.AppNoneApp 实例,可直接调用 minium.App 中的方法
- miniminium.MiniumNoneMinium 实例,可直接调用 minium.Minium 中的方法
- nativeminium.NativeNoneNative 实例,可直接调用 minium.Native 中的方法
环境搭建
搭建 Minium Doc(微信官方人员确认,无需进行本地搭建,本地搭建的都是错的,而且还是旧的文档)
无需构建,直接访问官方文档(https://minitest.weixin.qq.com/#/)
安装软件
- 下载并安装 python 3.8+,地址:https://www.python.org/downloads/release/python-390/
- 下载并安装 Node.js,地址:http://nodejs.cn/download/(可选项,仅限于我司小程序产品)
- 下载并安装微信开发者工具,地址:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
安装 minium
- 下载 https://minitest.weixin.qq.com/minium/Python/dist/minium-latest.zip,然后执行
- 第一步:解压,解压路径自己记住(我这里解压到 C:\minium-1.2.6)
- 第二步:切换到文件目录下
- 第三步:执行即可(如下图)
- 第四步:测试
特别说明
如果新手通过本地解压再执行,遇到以下问题
-
请直接使用以下命令,即可一次性成功安装
pip3 install https://minitest.weixin.qq.com/minium/Python/dist/minium-latest.zip
配置微信开发者工具
安装微信开发者工具(我本机使用的版本是 1.06.2205312),并打开安全模式: 设置 -> 安全设置 -> 服务端口: 打开
在工具栏菜单中点击设置,选择项目设置,切换到 “本地设置”,将调试基础库选择大于 2.7.3 的库;
开启微信工具安全设置中的 CLI/HTTP (提供了命令行和 HTTP 两种调用方式) 调用功能。
开启被测试项目的自动化端口号
"path/to/cli" auto --project "path/to/project" --auto-port 9420
路径说明
- path/to/project: 指代填写存放小程序源码的目录地址,文件夹中需要包含有 project.config.json 文件
- path/to/cli: 指代开发者工具 cli 命令路径
- 与下图一致证明开启成功
"C:/Program Files (x86)/Tencent/微信web开发者工具/cli" auto --project "C:/WeChatProjects/miniprogram-1" --auto-port 9420
配置信息
代码结构目录
模拟器 Config.json
{
"project_path": "C:\\WeChatProjects\\miniprogram-1",
"dev_tool_path": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
"debug_mode": "debug",
"test_port": 9420,
"platform": "ide",
"app": "wx",
"assert_capture": true,
"request_timeout":60,
"remote_connect_timeout": 300,
"auto_relaunch": true
}
真机 Config.json
{
"project_path": "C:\\WeChatProjects\\xxx_chinamobile-pmc_migration2\\unpackage\\dist\\build\\mp-weixin",
"dev_tool_path": "C:\\Program Files (x86)\\Tencent\\微信web开发者工具\\cli.bat",
"debug_mode": "debug",
"test_port": 9420,
"platform": "Android",
"app": "wx",
"enable_app_log": true,
"device_desire": {
"serial": "d310bf55"
},
"assert_capture": true,
"request_timeout":60,
"remote_connect_timeout": 300,
"auto_relaunch": true
}
Suite.json
{
"pkg_list": [
{
"case_list": [
"test_*"
],
"pkg": "testcase.*_test"
}
]
}
测试用例
first_test.py
# !/usr/bin/python
# -*- coding: utf-8 -*-
"""
@File : first_test.py
@Create Time: 2022-06-01 16:17
@Description:
"""
import minium
class FirstTest(minium.MiniTest):
def test_get_system_info(self):
sys_info = self.mini.get_system_info()
print("FirstTest: ", sys_info)
self.assertIn("SDKVersion", sys_info)
if __name__ == "__main__":
import unittest
loaded_suite = unittest.TestLoader().loadTestsFromTestCase(FirstTest)
result = unittest.TextTestRunner().run(loaded_suite)
print(result)
主程序入口
run.py
# !/usr/bin/python
# -*- coding: utf-8 -*-
"""
@File : run.py
@Create Time: 2022-06-01 17:21
@Description:
"""
import os
# 运行执行class文件中的指定用例
cmd0 = "minitest -m testcase.first_test --case test_get_system_info -c config.json -g"
# 运行执行testcase文件中的指定用例
cmd1 = "minitest -m testcase.first_test -c config.json -g"
# 按照suite配置执行用例
cmd2 = "minitest -s suite.json -c config.json -g"
os.system(cmd0)
执行用例
测试报告
测试结果存储在 outputs 下,运行命令
python -m http.server 12345 -d outputs
然后在浏览器上访问 http://localhost:12345 即可查看报告
参考资料
https://blog.csdn.net/jiangjunsss/article/details/120228371
https://blog.csdn.net/baguenaudier/article/details/124478687
https://blog.csdn.net/weixin_49546967/article/details/119858529
https://minitest.weixin.qq.com/#/minium/Python/readme
https://developers.weixin.qq.com/community/develop/article/doc/0000cae3a58748ed7f2c8975351413
转载文章时务必注明原作者及原始链接,并注明「发表于 TesterHome 」,并不得对作品进行修改。
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!