minium-小程序自动化测试框架

提起 UI 自动化测试,web 端常用 Selenium,手机端常用 Appium,那么很火的微信小程序可以用什么工具来进行自动化测试?本篇将介绍一款专门用于微信小程序的自动化测试工具 - minium。

简介

minium 是为小程序专门开发的自动化框架, 提供了 Python 和 JavaScript 版本。使用 minium 可以进行小程序 UI 自动化测试, 但是 minium 的功能不止于仅仅是 UI 自动化, 甚至可以使用 minium 来进行函数的 mock, 可以直接跳转到小程序某个页面并设置页面数据, 做针对性的全面测试。

特性:

1、支持一套脚本,iOS & Android & 模拟器,三端运行

2、提供丰富的页面跳转方式,看不到也能去得到

3、可以获取和设置小程序页面数据,让测试不止点点点

4、可以直接触发小程序元素绑定事件

5、支持往 AppSerive 注入代码片段

6、可以调用部分 wx 对象上的接口

官方文档:

https://run-noob.github.io/minium-doc-github/#/minium/Python/readme

安装

1、环境要求(Python 版本):
Python 3.x

微信公共库版本 >= 2.7.3

安装 稳定版微信开发者工具

如果要测 Android,下载 微信测试包

2、安装:

(1)微信开发者工具-设置-安全设置,开启安全模式。

图片

(2)安装 minium

pip install minium

快速上手

1、使用开发者工具的命令行工具,输入命令打开测试小程序。

/Applications/wechatwebdevtools.app/Contents/MacOS/cli --auto /Users/wangmeng/WeChatProjects/testdemo --auto-port 9420

注:
(1)这里的 --auto-port 填写 9420,不是开发者工具安全模式的端口。

(2)确保开发者工具登录的微信号具备被测小程序的开发者权限。

(3)/Applications/wechatwebdevtools.app/Contents/MacOS/cli 命令行工具所在位置。

Mac: <安装路径>/Contents/MacOS/cli

Windows: <安装路径>/cli.bat

(4)/Users/wangmeng/WeChatProjects/testdemo 小程序工程的路径(例如官方的小程序示例)。

输入后,成功打开对应的小程序。

图片

命令行输出:Open project with automation enabled success,表示成功。

图片

2、确认开发者工具调试基础库版本 >= 2.7.3。

图片

3、打开 IDE,如 PyCharm,创建示例代码。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号:咖啡加剁椒
import minium

mini = minium.Minium()
system_info = mini.get_system_info()
print(system_info)

执行结果,成功打印出系统信息。

在这里插入图片描述

如果想在手机上运行脚本,可以点击开发者工具的真机调试,连接成功后,再次运行脚本,脚本就会在手机上面运行。

在这里插入图片描述

连接成功。

在这里插入图片描述

再次执行后,可以看到打印出的是手机上的系统信息。

图片

测试框架

minium 提供一个基于 unittest 封装好的测试框架。

测试基类 MiniTest 会根据测试配置进行测试,minitest 向上继承了 unittest.TestBase。

示例代码,2条用例,每条用例都加上了断言。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 公众号:咖啡加剁椒
import minium
import time

class MyTest(minium.MiniTest):
    def test_view(self):
        self.page.get_element("view", inner_text="视图容器").click()
        self.page.get_element(".navigator-text", inner_text="swiper").click()
        self.page.get_elements("switch")[0].click()
        self.page.get_elements("switch")[1].click()
        assertValue1 = self.page.get_element(".weui-cell__bd").text
        self.assertEqual("指示点", assertValue1)
        time.sleep(0.5)
        self.app.navigate_back()

    def test_form(self):
        self.page.get_element("view", inner_text="表单组件").click()
        self.page.get_element(".navigator-text", inner_text="textarea").click()
        self.page.get_element("page > view > view > view:nth-child(1) > view.textarea-wrp > textarea").click()
        self.page.get_element("page > view > view > view:nth-child(1) > view.textarea-wrp > textarea").input("小程序自动化测试")
        assertValue2 = self.page.get_element("page > view > view > view:nth-child(1) > view.textarea-wrp > textarea").text
        self.assertIn("小程序", assertValue2)
        time.sleep(0.5)
        self.app.navigate_back()

执行结果,2条用例执行成功。

在这里插入图片描述

自动生成 outputs 目录,将测试数据输出到 outputs 目录里,里面包含一个简易的测试报告。

图片

打开命令行,跳转到脚本项目目录里,输入:

python -m http.server 8080 -d outputs

在浏览器中输入 http://localhost:8080/ 可以查看测试报告。

在这里插入图片描述

执行日志。

图片

如果不想在 IDE 上运行,只想在命令行上运行用例。

在项目的根目录上创建 suite.json 文件。

文件内容:

{
    "pkg_list": [
        {
            "pkg": "case.*",
            "case_list": [
                "test_*"
            ]
        }
    ]
}

项目结构,case 目录存放测试用例。

在这里插入图片描述

打开命令行,跳转到脚本项目目录里(testdemo123 编写的脚本项目),输入:

miniruntest -s suite.json

加载用例开始执行。

图片

如果想在手机上运行脚本(如 Android),只需要在用例目录下创建 config.json 配置文件即可。

{
    "debug_mode": "info",
    "enable_app_log": false,
    "platform": "Android"
}

然后连接手机,并且保证 adb devices 能够识别到手机,之后命令行输入执行命令就可以了。

最后感谢每一个认真阅读我文章的人!作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,希望能给你前进的路上带来帮助。如果你用得到的话可以直接拿走:

软件测试资料领取:[内部资源] 想拿年薪40W+的软件测试人员,这份资料必须领取~

软件测试面试刷题工具领取:软件测试面试刷题【800道面试题+答案免费刷】

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你! 

<think>好的,我需要帮用户解答如何构建小程序自动化测试框架的问题。首先,用户提到了站内引用,里面有几个相关资源,我需要结合这些信息来组织答案。 引用[2]提到了腾讯的minitest框架,引用[4]提到了微信开发者工具和Python。引用[3]则讨论了MySQL的测试框架和Python+Pytest的组合。另外,引用[1]讲的是测试框架的分层和模块化管理,这些都可以作为参考。 首先,应该分步骤介绍构建方法。可能包括工具选择、框架分层、用例管理、持续集成等方面。然后,结合用户提供的引用,比如minitest作为专用工具,Appium用于跨平台,Python和Pytest作为技术栈。还需要提到持续集成工具如Jenkins,以及如何利用TestNG的参数化测试。 可能需要列出常用工具,比如minitest、Appium、Selenium、Pytest、Jenkins等,并说明各自的适用场景。然后分步骤详细说明每个阶段要做的事情,比如环境搭建、框架设计、用例编写、集成与报告等。 要确保回答结构清晰,每个部分都有对应的引用支持。例如,在讲模块化管理时引用[1],在讲minitest时引用[2]和[4],在讲Python和Pytest时引用[3]。 还要注意用户的问题是关于小程序自动化测试,所以需要突出小程序专用的工具,如minitest和微信开发者工具,同时也可以提到通用工具如Appium的适用性。 最后,生成相关问题,可能涉及工具对比、优化方法、持续集成配置等。</think>### 构建小程序自动化测试框架的方法和工具 #### 一、核心工具选择 1. **专用工具**:腾讯开发的 **minitest** 是专为微信小程序设计的自动化测试框架,支持UI操作模拟(如点击、输入)和断言验证,集成于微信开发者工具中[^2][^4]。 2. **通用工具**: - **Appium**:适用于跨平台(iOS/Android)的小程序测试,支持与Python结合实现脚本编写[^1]。 - **Selenium**:若小程序运行在Web端,可通过Selenium实现浏览器自动化。 3. **编程语言**:推荐 **Python** + **Pytest** 组合,语法简洁且支持参数化测试和结果分析[^3]。 #### 二、框架设计步骤 1. **环境搭建** - 安装 **Python 3.8** 和 **微信开发者工具**(需开启自动化测试端口)[^4]。 - 配置 **minitest** 或 **Appium** 依赖库,例如通过 `pip install minium` 安装腾讯测试框架。 2. **框架分层(参考MVC模式)** - **驱动层**:封装小程序操作(如页面跳转、元素定位),例如: ```python from minium import MiniTest class WXApp(MiniTest): def click_button(self, selector): self.page.get_element(selector).click() ``` - **用例层**:使用 **Pytest** 编写测试用例,支持数据驱动: ```python import pytest @pytest.mark.parametrize("input, expected", [("test1", "success"), ("test2", "fail")]) def test_login(input, expected): assert wxapp.login(input) == expected ``` - **数据层**:通过YAML/Excel管理测试数据,实现数据与脚本分离[^1]。 3. **持续集成(CI/CD)** - 使用 **Jenkins** 定期执行测试任务,生成可视化报告[^1]。 - 集成代码仓库(如Git),触发自动化测试流程。 #### 三、优化与扩展 - **性能监控**:在测试脚本中添加内存/CPU占用率采集,例如通过 `psutil` 库。 - **多端覆盖**:结合 **Appium** 实现iOS/Android原生环境测试。 - **异常处理**:通过 `try-except` 捕获元素未找到等异常,增强脚本健壮性。 --- ### 相关工具对比表 | 工具 | 适用场景 | 优点 | 缺点 | |------------|---------------------------|-------------------------------|---------------------| | minitest | 微信小程序 | 官方支持,深度集成 | 仅限微信生态 | | Appium | 跨平台(iOS/Android/Web) | 社区活跃,扩展性强 | 配置复杂 | | Pytest | 测试用例管理 | 参数化测试,插件丰富 | 需结合其他工具使用 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值