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

快速上手

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

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

注:
(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 miniummini = 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 timeclass 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").textself.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").textself.assertIn("小程序", assertValue2)time.sleep(0.5)self.app.navigate_back()

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

在这里插入图片描述

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

图片

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

python -m http.server 8080 -d outputs
  • 1

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

在这里插入图片描述

执行日志。

图片

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

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

文件内容:

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

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

在这里插入图片描述

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

miniruntest -s suite.json
  • 1

加载用例开始执行。

图片

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

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

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

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取 【保证100%免费】

在这里插入图片描述

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/484192.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源分子对接程序rDock的安装及使用流程

前言 本文介绍开源分子对接程序rDock在Linux Ubuntu 22.04系统上的conda安装、编译安装过程及程序使用流程。 一、rDock是什么&#xff1f; rDock来源 rDock是一个快速、多功能的开源对接程序&#xff0c;可用于将小分子与蛋白质和核酸对接。它专为高通量虚拟筛选&#xff08…

Xtuner 大模型单卡低成本微调之本地实战--医学问答

xtuner convert pth_to_hf internlm_chat_7b_qlora_medqa2019_e3.py ./work_dirs/internlm_chat_7b_qlora_medqa2019_e3/epoch_3.pth/mp_rank_00_model_states.pt ./任何使用xtuner可以查看这里 安装和使用 github 文末有 自定义微调 场景需求 基于 InternLM-chat-7B 模型…

用结构减法比较平面上4点结构的顺序

( A, B )---6*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有6个节点&#xff0c;AB训练集各由6张二值化的图片组成&#xff0c;A有4个点&#xff0c;B全是0.收敛误差7e-4&#xff0c;收敛199次&#xff0c;统计迭代次数平均值并排序。 如果行和列自由变换&#xff0c;迭代次数不…

LaTex和Word中推荐使用的矢量图片格式

1、LaTex 推荐使用eps矢量格式。&#xff08;该格式直接放在word中不会显示&#xff0c;但是通过插入word后双击打开查看 2、Word 推荐使用svg矢量格式。该格式可以直接插入word中。 3、plt保存代码 import matplotlib.pyplot as plt# 绘制图形 x [1, 2, 3, 4, 5] y1 [1…

文心一言 VS 讯飞星火 VS chatgpt (199)-- 算法导论15.2 1题

一、用go语言&#xff0c;对矩阵规模序列(5&#xff0c;10&#xff0c;3&#xff0c;12&#xff0c;5&#xff0c;50&#xff0c;6)&#xff0c;求矩阵链最优括号化方案。 文心一言&#xff0c;代码正常运行&#xff1a; 在Go语言中&#xff0c;为了找到矩阵链乘法的最优括号…

PostgreSQL教程(二):pg安装、架构基础、创建并访问数据库

安装 自然&#xff0c;在你能开始使用PostgreSQL之前&#xff0c; 你必须安装它。PostgreSQL很有可能已经安装到你的节点上了&#xff0c; 因为它可能包含在你的操作系统的发布里&#xff0c; 或者是系统管理员已经安装了它。如果是这样的话&#xff0c; 那么你应该从操作系统…

如何在OpenWRT安装内网穿透工具实现远程访问本地搭建的web网站界面

文章目录 前言1. 检查uhttpd安装2. 部署web站点3. 安装cpolar内网穿透4. 配置远程访问地址5. 配置固定远程地址 前言 uhttpd 是 OpenWrt/LuCI 开发者从零开始编写的 Web 服务器&#xff0c;目的是成为优秀稳定的、适合嵌入式设备的轻量级任务的 HTTP 服务器&#xff0c;并且和…

Mac远程连接Windows 11

1. Windows配置 1.1 打开远程连接权限 打开“控制面板”搜索“远程”&#xff0c;选择“允许远程访问你的计算机”这一项。 1.2 添加远程连接用户 打开“计算机管理”&#xff0c;并在用户下新增“新用户”&#xff0c;share是我自己使用的名字&#xff0c;这个名字不固定随…

FPGA_SD卡读写

一 SD卡 SD卡&#xff0c;安全数字卡&#xff0c;体积小&#xff0c;容量大&#xff0c;存储速度块&#xff0c;支持热插拔。 二 SD卡存储容量 SD卡类型协议规范容量等级SDSCSD1.0上限至2GBSDHCSD2.02GB至32GBSDXCSD3.032GB至2TB 三 SD卡速度等级 标志串列数据写入速度UHS…

Socks5代理IP详解:优势与应用场景

Socks5代理IP作为网络代理技术的前沿选择&#xff0c;其在多方面的优势使其在2024年成为了热门选择。 一、Socks5代理IP的核心特性 1、Socks5代理IP与其他代理类型的比较 HTTP代理设计用于web浏览&#xff0c;仅支持HTTP和HTTPS协议。 Socks4代理支持更多类型的网络协议&…

【Python Scrapy】分布式爬虫利器

在当今信息爆炸的时代&#xff0c;获取大规模数据对于许多应用至关重要。而分布式爬虫作为一种强大的工具&#xff0c;在处理大量数据采集和高效爬取方面展现了卓越的能力。 本文将深入探讨分布式爬虫的实际应用场景&#xff0c;通过代码示例演示其在提升爬取效率、保障系统稳定…

C#知识点-15(匿名函数、使用委托进行窗体传值、反射)

匿名函数 概念&#xff1a;没有名字的函数&#xff0c;一般情况下只调用一次。它的本质就是一个方法&#xff0c;虽然我们没有定义这个方法&#xff0c;但是编译器会把匿名函数编译成一个方法 public delegate void Del1();//无参数无返回值的委托public delegate void Del2(s…