学习笔记——测试进阶之路 工作笔记:基于微信 minium 框架的小程序自动化初步实践(1)

校服杀人魔 测试交流1 199字数 3825阅读模式

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)
  • 第二步:切换到文件目录下
  • 第三步:执行即可(如下图)
  • 第四步:测试
特别说明
  • 如果新手通过本地解压再执行,遇到以下问题

    文章源自玩技e族-https://www.playezu.com/185501.html
  • 请直接使用以下命令,即可一次性成功安装文章源自玩技e族-https://www.playezu.com/185501.html

    pip3 install https://minitest.weixin.qq.com/minium/Python/dist/minium-latest.zip
    


    文章源自玩技e族-https://www.playezu.com/185501.html
配置微信开发者工具
  • 安装微信开发者工具(我本机使用的版本是 1.06.2205312),并打开安全模式: 设置 -> 安全设置 -> 服务端口: 打开

    文章源自玩技e族-https://www.playezu.com/185501.html
  • 在工具栏菜单中点击设置,选择项目设置,切换到 “本地设置”,将调试基础库选择大于 2.7.3 的库;

    文章源自玩技e族-https://www.playezu.com/185501.html
  • 开启微信工具安全设置中的 CLI/HTTP (提供了命令行和 HTTP 两种调用方式) 调用功能。文章源自玩技e族-https://www.playezu.com/185501.html

  • 开启被测试项目的自动化端口号文章源自玩技e族-https://www.playezu.com/185501.html

"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

文章源自玩技e族-https://www.playezu.com/185501.html

配置信息

代码结构目录

文章源自玩技e族-https://www.playezu.com/185501.html
模拟器 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)

执行用例

文章源自玩技e族-https://www.playezu.com/185501.html

测试报告

测试结果存储在 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软件功能测试文档模板

玩技站长微信
添加好友自动发送入群邀请
weinxin
rainbow-shownow
玩技官方公众号
官方微信公众号
weinxin
PLAYEZU
 
  • 版权提示:本站仅供存储任何法律责任由作者承担▷诈骗举报◁▷新闻不符◁▷我要投稿◁
    风险通知:非原创文章均为网络投稿真实性无法判断,侵权联系2523030730
    免责声明:内容来自用户上传发布或新闻客户端自媒体,切勿!切勿!切勿!添加联系方式以免受骗。
  • 原创转载:https://www.playezu.com/185501.html
    转载说明: 点我前往阅读>>>
    • loneyao
      loneyao 9

      总结的很好,谢谢分享。看到大佬已经写了 4 篇了,我还没搞过小程序的测试,准备照着你的实践下,多谢分享更新文档中的操作说明
      如果新手遇到以下问题

      注意,不要采用本地解压再执行的方法,请直接使用 pip3 install https://minitest.weixin.qq.com/minium/Python/dist/minium-latest.zip
      即可一次性成功安装

    匿名

    发表评论

    匿名网友
    确定