当前位置: 首页 > news >正文

【python+appium】自动化测试

python+appium自动化测试系列就要告一段落了,本篇博客咱们做个小结。

首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还是需要花时间去掌握的,毕竟谁也不会跟钱过不去。

接下来,一起总结一下APP UI自动化测试的思路吧。

一,开发语言选择
通常用于自动化测试的编程语言有:Python、Java、Javascript、Ruby、C#、PHP等。一般我们会选择自己熟悉的编程语言来编写自动化脚本,但对于编程基础基本为0的童鞋(或者专注于做自动化测试的童鞋),推荐学习使用Python。

相对于其他语言,Python做自动化测试有以下优点:

对于初学者来说,Python语法简洁,可读性强,易于学习

有强大的第三方库,编写脚本效率更高

Python中的Pytest自动化测试框架是目前最流行的测试框架之一

二,UI测试框架选择
选择编开发语言之后,我们需要选择UI测试框架。目前较为主流或者使用较多的APP UI自动化测试框架有Appium、Airtest等。

1,Appium
开源

Appium server支持在Windows、macOS、Linux上运行

支持多种主流编程语言,如Python、Java、Javascript、Ruby等

支持Android、ios、H5自动化测试(集成了UiAutomator、UiAutomation框架)

环境搭建较为复杂

2,Airtest
由网易开发(官方文档),只支持python语言

提供集成Airtest与Poco两个测试框架的强大的IDE,对新手很友好

集成基于图像识别的UI自动化测试框架airtest,即使不懂代码也能编写自动化脚本

跨平台,可对Windows、Android和iOS应用软件进行自动化测试

对游戏测试较为友好

Airtest与Poco本质上是python的两个第三方库,测试环境搭建没有Appium那么复杂

3,选择框架
根据实际情况选择合适的框架。

以下情况可以优先选择网易的Airtest (Airtest官网):

无编程基础

游戏测试

测试场景较为单一(Appium相对来说较为笨重)

支付宝小程序自动化(博主目前使用Airtest集成的Poco框架做支付宝小程序自动化测试)

以下情况建议选择Appium:

测试场景比较复杂(如需要多台手机批量测试)

测试脚本语言非Python(Airtest目前只支持Python)

三,单元测试框架选择
区别于上面所说的UI测试框架,单元测试框架用于加载测试用例、执行测试用例、断言、输出测试结果等。

不同的开发语言有各自对应的单元测试框架,如Java有JUnit、TestNG、Robot等,Python有unittest、pytest等。博主主要使用Python做自动化测试,所以这里只针对Python单元测试框架做说明。

python主流的单元测试框架:

unittest,Python自带的单元测试框架

pytest,基于unittest开发,易用性好,信息更详细,插件众多

robot framework,基于Python的关键字驱动测试框架,有界面,自带报告及log,功能完善,清晰美观

这里强烈推荐使用pytest,功能强大且容易上手,官方文档为英文,中文可参考Pytest 使用手册。

四,测试环境搭建
1,测试电脑选择
有条件的话建议使用Mac机器专门用于UI自动化测试,因为ios app ui自动化只能在Mac机器上进行。

2,测试手机选择
刚开始进行测试脚本调试时可以选择模拟器,Android模拟器可选择Gernymotion、夜神模拟器

待整个测试项目开发完成后,建议换成真机跑自动化脚本,这样更接近真实的用户使用场景。

3,开发语言环境
建议安装python 3以上的版本,官方已经停止对python2版本的更新维护。

4,UI自动化测试框架环境搭建
windows环境下搭建Appium,Mac下搭建Appium稍微复杂点,后续会写博客分享。

若选择Airtest框架的话,请参考官网。

五,脚本编写
1,编写测试demo
为了验证整个测试环境是否搭建成功、是否能跑通用例,一般我们需要先编写简单的测试脚本并执行,通过则说明整个环境搭建成功。

2,确定目录结构
推荐使用Page Object设计模式来开发APP UI自动化测试项目。

3,选择测试报告
不同的开发语言、不同的单元测试框架可选用不同的测试报告。在python中,unittest框架使用HTMLTestRunner或BSTestrunner生成测试报告。Pytest框架使用pytest-html生成报告或通过allure定制测试报告。

以上步骤完成后,继续往测试项目里新增测试用例便可。

六,Jenkins集成
根据上述步骤编写完成整个app UI自动化测试项目,且运行一段时间稳定后,就可以考虑进行Jenkins的集成

七,总结
总结APP UI自动化可使用以下几种实现方式:

1,python + appium + unittest + HTMLTestRunner

2,python + appium + pytest + pytest-html / allure

3,python + Airtest(AirtestIDE)

4,python + Poco + pytest + pytest-html / allure

可根据实际情况自行选择。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

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

相关文章:

【python+appium】自动化测试

pythonappium自动化测试系列就要告一段落了,本篇博客咱们做个小结。 首先想要说明一下,APP自动化测试可能很多公司不用,但也是大部分自动化测试工程师、高级测试工程师岗位招聘信息上要求的,所以为了更好的待遇,我们还…...

vue 数据类型

文章目录 ref 创建:基本类型的响应式数据reactive 创建:对象类型的响应式数据ref 创建:对象类型的响应式数据ref 对比 reactive将一个响应式对象中的每一个属性,转换为ref对象(toRefs 与 toRef)computed (根据计算进行修改) ref 创…...

MySQL(基础篇)

DDL (Data Definition Language) 数据定义语言,用来定义数据库对象(数据库,表, 字段) DML (Data Manipulation Languag) 数据操作语言,用来对数据库表中的数据进行增删改 DQL (Data Query Language) 数据查询语言,用…...

springboot中通过jwt令牌校验以及前端token请求头进行登录拦截实战

前言 大家从b站大学学习的项目侧重点好像都在基础功能的实现上,反而一个项目最根本的登录拦截请求接口都不会写,怎么拦截?为什么拦截?只知道用户登录时我后端会返回一个token,这个token是怎么生成的,我把它…...

从零开始开发视频美颜SDK:实现直播美颜效果

因此,开发一款从零开始的视频美颜SDK,不仅可以节省成本,还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前,首先需要进行详细的需求…...

极验语序点选验证码识别(一)

注意,本文只提供学习的思路,严禁违反法律以及破坏信息系统等行为,本文只提供思路 极验文字点选验证码不必多说,很多小伙伴,借助标注工具或者打码平台标注完数据集后,使用开源的目标检测网络即可完成,欢迎收看我之前的文章: Pytorch利用ddddocr辅助识别点选验证码 或者使…...

什么是 HTTP POST 请求?初学者指南与示范

在现代网络开发领域,理解并应用 HTTP 请求 方法是基本的要求,其中 "POST" 方法扮演着关键角色。 理解 POST 方法 POST 方法属于 HTTP 协议的一部分,主旨在于向服务器发送数据以执行资源的创建或更新。它与 GET 方法区分开来&…...

第一次作业

任务需求:1.DMz区内的服务器,办公区仅能在办公时间内(9-18)可以访问,生产区的设备全天可以访问 2.生产区不允许访问互联网,办公区和游客区可以访问互联网 3.办公区设备10.0.2.10不允许访问DMZ区的FTP服务器和http服务器,仅能ping通…...

【机器学习】12.十大算法之一支持向量机(SVM - Support Vector Machine)算法原理讲解

【机器学习】12.十大算法之一支持向量机(SVM - Support Vector Machine)算法原理讲解 一摘要二个人简介三基本概念四支持向量与超平面4.1 超平面(Hyperplane)4.2 支持向量(Support Vectors)4.3 核技巧&…...

使用 `useAppConfig` :轻松管理应用配置

title: 使用 useAppConfig :轻松管理应用配置 date: 2024/7/11 updated: 2024/7/11 author: cmdragon excerpt: 摘要:本文介绍了Nuxt开发中useAppConfig的使用,它便于访问和管理应用配置,支持动态加载资源、环境配置切换、权限…...

中国内陆水体氮沉降数据集(1990s-2010s)

全球大气氮沉降急剧增加对内陆水生态系统产生不良影响。中国是全球三大氮沉降热点地区之一,为了充分了解氮沉降对中国内陆水体的影响,制定合理的水污染治理方案,我们需要清楚的量化内陆水体的氮沉降通量。为此,我们利用LMDZ-OR-IN…...

qml 实现一个带动画的switch 按钮

一.效果图 》 二.qml 代码 import QtQuick 2.12 import QtQuick.Controls 2.12Switch {id: controlimplicitWidth: 42implicitHeight: 20indicator: Rectangle {id: bkRectangleanchors.fill: parentx: control.leftPaddingy: parent.height / 2 - height / 2radius: height …...

C语言基本概念

C语言是什么? 1.人与人之间 自然语言 2.人与计算机之间 计算机语言 例如C、Java、Go、Python 在计算机语言中 1.解释型语言:Python 2.编译型语言:C/C 编译和链接 C语言源代码都是文本文件.c,必须通过编译器的编译和链接器的…...

同轴多芯旋转电连接器1

什么是旋转电连接器? 旋转电连接器,亦称电气旋转接头或滑环,主要用于电气工程领域。其作用是在固定部件与旋转部件之间传输电信号、电源或数据,从而避免因旋转而引起的电线拉伤或缠结问题。这类连接器对于需要在旋转的同时进行电…...

android 消除内部保存的数据

在Android中,有多种方式可以消除应用内部保存的数据。这些数据可能存储在SharedPreferences、SQLite数据库、文件(包括缓存文件)或Content Providers中。以下是几种常见的方法来消除这些数据: SharedPreferences: 要删…...

vue3 ts 报错:无法找到模块“../views/index/Home.vue”的声明文件

解决办法: env.d.ts 新增代码片段: declare module "*.vue" {import type { DefineComponent } from "vue";// eslint-disable-next-line typescript-eslint/no-explicit-any, typescript-eslint/ban-typesconst component: Define…...

finalshell发布前端项目到阿里云

ssh连接...

纹波电流与ESR:解析电容器重要参数与应用挑战

电解电容纹波电流与ESR(Equivalent Series Resistance)是电容器的重要参数,用来描述电容器对交流信号的响应能力和能量损耗。电解电容纹波电流是指电容器在工作时承受的交流信号电流,而ESR则是电容器内部等效电阻,影响…...

算法——二分法

目录 基本介绍实现后继定义举例代码 前驱定义举例代码 基本介绍 二分法是 每次都排除半个区间,然后在剩余的半个区间内寻找解 的方法,排除半个区间的前提是:区间是有序的,这样一来,当解 小于 区间中点时,就…...

「PaddleOCR」 模型应用优化流程

PaddleOCR 算是OCR算法里面较好用的,支持的内容多,而且社区维护的好(手把手教你,生怕你学不会),因此在国内常采用。目前已经更新到 2.8版本了,功能更加丰富、强大;目前支持通用OCR、表格识别、图片信息提取…...

基于Next.js与Shadcn/ui的现代Web仪表盘开发实战指南

1. 项目概述与核心价值 最近在折腾一个开源项目,叫 openclaw-dashboard ,是 anis-marrouchi 大佬在 GitHub 上开源的一个仪表盘项目。光看名字,你可能会觉得这又是一个平平无奇的“又一个仪表盘”,但实际深入把玩之后&#x…...

2026生鲜零售收银软件推荐:四大主流方案深度对比

开一家生鲜店,最让人头疼的往往不是进货渠道或选址,而是每天高峰期那台“卡住”的收银机。想象一下,周末傍晚顾客排成长龙,称重员手忙脚乱地输入代码,屏幕转圈加载,后面的顾客开始不耐烦地催促,…...

Windows电脑运行安卓应用终极指南:APK安装器完整教程

Windows电脑运行安卓应用终极指南:APK安装器完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 你是否曾经想过,在Windows电脑上直接运行安…...

对比直接使用厂商API与通过Taotoken聚合调用的费用观感

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 对比直接使用厂商API与通过Taotoken聚合调用的费用观感 1. 引言:成本感知的演变 在构建基于大模型的应用时&#xff0…...

Python核心技术难点与实战案例解析

Python核心技术难点梳理与实战落地案例解析 一、前言 Python凭借简洁易懂的语法、丰富齐全的第三方库、跨平台运行优势,成为当下后端开发、数据分析、自动化运维、人工智能等领域的主流编程语言。在实际项目开发与学习过程中,多数开发者常会遇到语法细节…...

Gemini Nano离线推理部署手册(移动端LLM轻量化部署终极版)

更多请点击: https://codechina.net 第一章:Gemini Nano离线推理部署手册(移动端LLM轻量化部署终极版) Gemini Nano 是 Google 推出的首个专为端侧设备设计的轻量级大语言模型,支持在 Android 14 设备上本地运行&…...

3步解锁鸣潮性能上限:WaveTools工具箱的帧率优化与抽卡分析实践

3步解锁鸣潮性能上限:WaveTools工具箱的帧率优化与抽卡分析实践 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 你是否在《鸣潮》游戏中遭遇过帧率卡顿、画质设置受限或抽卡记录混乱的困扰&…...

【亲测免费】 轻松转换:Hex文件转Bin文件工具推荐

轻松转换:Hex文件转Bin文件工具推荐 【下载地址】hex文件转bin文件工具 本仓库提供了一个用于将.hex文件转换为.bin文件的工具。该工具包含源代码,用户只需将.hex文件拖放到hex2bin.exe上,即可自动生成对应的.bin文件 项目地址: https://gi…...

如何快速掌握CircuitJS1:免费高效的浏览器电路仿真终极指南

如何快速掌握CircuitJS1:免费高效的浏览器电路仿真终极指南 【免费下载链接】circuitjs1 Electronic Circuit Simulator in the Browser 项目地址: https://gitcode.com/gh_mirrors/ci/circuitjs1 CircuitJS1是一款功能强大的电子电路仿真工具,它…...

软件测试的“隐形赛道”:性能测试如何年入50w

一、性能测试:软件测试领域的“隐形黄金赛道”在软件测试的广阔版图中,性能测试长期处于“隐形”状态,却暗藏着年入50w的职业密码。相较于广为人知的功能测试,性能测试聚焦于系统在高并发、大数据量、复杂场景下的表现&#xff0c…...