全站最牛最细,小程序自动化测试入门到实践,手把手进阶成大L佬

本文主要是介绍全站最牛最细,小程序自动化测试入门到实践,手把手进阶成大L佬,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录:导读

    • 一、前言
    • 二、环境
    • 三、什么是小程序自动化
    • 四、准备
    • 五、启动
    • 六、自动化测试
    • 七、cli 命令行调用

一、前言

随着小程序项目越来越复杂,业务场景越来多,花费在回归测试上的时间会越来越多,前端自动化测试就非常有必要提上日程。

今天要带来的是: 小程序自动化测试入门教程

二、环境

系统 :macOS
微信开发者工具版本: 1.05.2106300

三、什么是小程序自动化

微信官方文档:小程序自动化

使用小程序自动化 SDK miniprogram-automator,可以在帮助我们在小程序中完成一些事情,比如:控制小程序跳转到指定页面,获取小程序页面数据,获取小程序页面元素状态等。
配合 jest 就可以实现小程序端自动化测试了。
话不多说,我们开始吧

四、准备

1、项目根目录 mini-auto-test-demo 里面准备两个目录 miniprogram 放小程序代码,和 test-e2e 放测试用例代码

 |— mini-auto-test-demo/  // 根目录|— miniprogram/       // 小程序代码|— pages/    |— index/      // 测试文件|— test-e2e/          // 测试用例代码|— index.spec.js    // 启动文件|package.json

index 文件夹下准备用于测试的页面

<!--index.wxml--><view class="userinfo"><view class="userinfo-avatar" bindtap="bindViewTap"><open-data type="userAvatarUrl"></open-data></view><open-data type="userNickName"></open-data></view>/**index.wxss**/
.userinfo {margin-top: 50px;display: flex;flex-direction: column;align-items: center;color: #aaa;
}
.userinfo-avatar {overflow: hidden;width: 128rpx;height: 128rpx;margin: 20rpx;border-radius: 50%;
}// index.js
// 获取应用实例
const app = getApp()
Page({data: {userInfo: {},},// 事件处理函数bindViewTap() {wx.navigateTo({url: '../logs/logs'})}
})

2、微信开发者工具->设置-> 安全设置 -> 打卡服务端口
请添加图片描述
3、安装npm包
如果根目录没有 package.json 文件,先执行

npm init

如果根目录已经有 package.json 文件 ,执行以下命令:

npm install miniprogram-automator jest --save-dev
npm i jest -g

安装需要的依赖
4、在根目录下新建index.spec.js 文件

const automator = require('miniprogram-automator')automator.launch({cliPath: '/Applications/wechatwebdevtools.app/Contents/MacOS/cli', // 工具 cli 位置projectPath: '/Users/SONG/Documents/github/mini-auto-test-demo/demo1/miniprogram', // 项目文件地址
}).then(async miniProgram => {const page = await miniProgram.reLaunch('/pages/index/index')await page.waitFor(500)const element = await page.$('.userinfo-avatar')console.log(await element.attribute('class'))await element.tap()await miniProgram.close()
})

这里要注意修改为自己的cli位置和项目文件地址:
1、cliPath:
可以在应用程序中找到微信开发者工具,点击右键点击"显示包内容"
请添加图片描述
找到cli后,快捷键 :command+option+c 复制路径, 就拿到了
请添加图片描述
2、projectPath:
注意!!项目路径填写的是小程序文件夹miniprogram而不是mini-auto-test-demo

五、启动

写好路径后,在mac终端进入mini-auto-test-demo根目录或 vscode 终端根目录执行命令:

node index.spec.js

请添加图片描述

你会发现微信开发者工具被自动打开,并执行了点击事件进入了log页面,终端输出了class的值。 到此你已经感受到了自动化

六、自动化测试

在一开始准备的test-e2e 文件夹下新建integration.test.js文件,引入’miniprogram-automator, 连接自动化操作端口,把刚刚index.spec.js中的测试代码,放到 jest it 里,jest相关内容我们这里就不赘述了

const automator = require('miniprogram-automator');describe('index', () => {let miniProgram;let page;const wsEndpoint = 'ws://127.0.0.1:9420';beforeAll(async() => {miniProgram = await automator.connect({wsEndpoint: wsEndpoint});}, 30000);it('test index', async() => {page = await miniProgram.reLaunch('/pages/index/index')await page.waitFor(500)const element = await page.$('.userinfo-avatar')console.log(await element.attribute('class'))await element.tap()});
});

在package.json scripts 添加命令

"e2e": "jest ./test-e2e integration.test.js --runInBand"

测试代码写好了,接下来如何运行呢?这里我们提另外一个方法。

七、cli 命令行调用

官方文档:命令行调用

你一定会问,刚刚我们不是学习了启动运行,这么还要学另外一种方法呢?

大家都知道,一般团队里都是多人合作的,大家的项目路径都不一样,难道每次还要改projectPath吗?太麻烦了,使用cli就不需要考虑在哪里启动,项目地址在哪里,话不多说,干!
打开终端进入放微信开发者工具cli文件夹(路径仅供参考):

cd /Applications/wechatwebdevtools.app/Contents/MacOS 

执行命令(如果你的微信开发者工具开着项目,先关掉)

./cli --auto  /Users/SONG/Documents/github/mini-auto-test-demo/miniprogram  --auto-port 9420

微信开发者工具通过命令行启动
请添加图片描述
启动后在项目根目录下执行,可以看到测试通过

npm run e2e

请添加图片描述
到此,我们已经可以写测试用例了。这只是入门系列,后续会持续更文


这篇关于全站最牛最细,小程序自动化测试入门到实践,手把手进阶成大L佬的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/476754

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Spring WebClient从入门到精通

《SpringWebClient从入门到精通》本文详解SpringWebClient非阻塞响应式特性及优势,涵盖核心API、实战应用与性能优化,对比RestTemplate,为微服务通信提供高效解决... 目录一、WebClient 概述1.1 为什么选择 WebClient?1.2 WebClient 与

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

C语言进阶(预处理命令详解)

《C语言进阶(预处理命令详解)》文章讲解了宏定义规范、头文件包含方式及条件编译应用,强调带参宏需加括号避免计算错误,头文件应声明函数原型以便主函数调用,条件编译通过宏定义控制代码编译,适用于测试与模块... 目录1.宏定义1.1不带参宏1.2带参宏2.头文件的包含2.1头文件中的内容2.2工程结构3.条件编

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

Olingo分析和实践之EDM 辅助序列化器详解(最佳实践)

《Olingo分析和实践之EDM辅助序列化器详解(最佳实践)》EDM辅助序列化器是ApacheOlingoOData框架中无需完整EDM模型的智能序列化工具,通过运行时类型推断实现灵活数据转换,适用... 目录概念与定义什么是 EDM 辅助序列化器?核心概念设计目标核心特点1. EDM 信息可选2. 智能类

Olingo分析和实践之OData框架核心组件初始化(关键步骤)

《Olingo分析和实践之OData框架核心组件初始化(关键步骤)》ODataSpringBootService通过初始化OData实例和服务元数据,构建框架核心能力与数据模型结构,实现序列化、URI... 目录概述第一步:OData实例创建1.1 OData.newInstance() 详细分析1.1.1