【airtest架构】pytest+pocoui+airtest+allure 完成安卓UI自动化框架

2023-11-12

一、背景:

为了做app的自动化,由于app元素定位麻烦或者定位不稳定,又或者使用驱动版本等原因,不想使用启动appnium服务的方式。
本文采用网易的airtest框架图像识别作为基础,配合pytest进行简单的二次开发形成一套对安卓app,小程序的UI功能自动化测试框架。

二、框架简介:

框架集成使用pytest+pocoui+airtest+allure,所以命名为ppa_project. 其中pytest负责用列的管理,可以对用例进行单条,多条,分类执行等等。同时,pocoui+airtest 负责UI控件的定位和图像的识别。框架的核心要素,allure负责测试报告的生成。

三、项目目录:

项目目录
项目目录详细注解:
base:封装基础方法 如滑动,点击等
config : 手机设备信息,app包信息 测试数据等yaml配置文件
logs : 记录每次运行的日志
page :app的每个页面的元素,其中main_page 作为app的初始页面。
reports :测试报告的数据和生成allure报告的地方。
testcase :测试用例文件。
testcase/case_image 存放用例中的图片(我这里是分页面存放)
utils :工具类,包含日志,发送邮件等
launch.py: 设备的连接和app的启动文件
run.py: 项目启动入口

四、核心代码解释:

1)连接手机,启动app,
读取config/device.yaml文件中的deviceName和appPackage。 在launch文件中使用start_app()和close_app() 启动和关闭app
device.yamllaunch文件
2)main_page. 初始化poco
main_page
3) login_page 在登录页面引入main_page 开始启动app,然后app启动过程中肯定需要一定的时间,这个跟测试的手机性能有关,所以我们就循坏去找首页是否出现,找到了就算成功。然后在判断app是否已经登录,如果未登录进入登录流程,如果已经登录则开始后面的业务流程测试了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【airtest架构】pytest+pocoui+airtest+allure 完成安卓UI自动化框架 的相关文章

  • 移动端APP自动化测试框架-UiAutomator2基础

    很早以前 我用 uiautomator java实践过Android APP自动化测试 不过今天要提的不是uiautomator 而是uiautomator2 听起来uiautomator2像是uiautomator的升级版 但是这两款框架
  • 打造一个可视化接口自动化测试系统

    现如今 接口开发几乎成为一个互联网公司的标配了 无论是web还是app 哪怕是小程序 都离不开接口作为支撑 当然 这里的接口范围很广 从http到websocket 再到rpc 只要能实现数据通信的都可以称之为接口 面临着如此庞大的接口数据
  • 什么是接口与API接口!

    今天有个朋友问我什么接口 你们平时都说在写接口 写的是什么鬼啊 我一开始就想 咦小陈同学怎么突然了解编程接口了 不过听到他后一个提问我知道原来他想的是API接口 不过被我主观意识习惯想成了编程定义上的接口 所以就突发其想 想写篇东西说明一下
  • jmeter实现webservice接口测试

    其实可以用jmeter两种sampler进行webservice的测试 1 SOAP XML RPC Request 但是在jmeter3 2以后版本中已经取消了这个取样器 2 HTTP请求 下面分别介绍两种方式 一 首先需要使用soupU
  • 【HttpRunner】接口自动化测试框架

    简介 2018年python开发者大会上 了解到HttpRuuner开源自动化测试框架 采用YAML JSON格式管理用例 能录制和转换生成用例功能 充分做到用例与测试代码分离 相比excel维护测试场景数据更加简洁 在此 利用业余时间研究
  • 数据迁移测试经验分享

    以下为作者观点 数据迁移 是在保证新旧系统业务连续性的前提下 将数据从旧数据库迁移到新数据库的过程 测试前通过迁移策略和方案了解新旧系统数据如何重构与关联 测试过程需确保数据迁移的正确性 主要体现在技术层面 确保数据0丢失 数据库库表处理正
  • 简单搭建一个Python自动化测试框架

    1 安装 Python 首先需要安装Python 可以从官网下载对应的版本 安装完成后 可以在终端中输入python来检查是否安装成功 2 安装pip pip是Python的包管理工具 用于安装和管理Python模块 可以在终端中输入以下命
  • 渗透测试报告怎么写?

    1 准备好渗透测试记录 测试记录是执行过程的日志 在每日测试工作结束后 应将当日的成果做成记录 虽然内容不必太过细致 但测试的重点必须记录在案 拟检测的项目 使用的工具或方法 检测过程描述 检测结果说明 过程的重点截图 有结果的画面 2 撰
  • 第三方软件验收测评在项目验收中的重要性

    CMA CNAS第三方检测报告 软件从最简单的家用电冰箱到工业生产 涉及方方面面 以前软件中的问题只是个人重启一下机器的小事情 但如今软件已在大型工业中发挥越来越大的作用 软件安全与质量的隐患已可能对人身安全和环境造成威胁 软件工程 的总目
  • 广州软件第三方测试报告需要盖CNAS\CMA吗?怎么取费?

    CNAS CMA资质 1 CMA资质标识 根据报告接收方要求 第三方测试报告上是否加盖CMA标识 第三方测试机构执行标准为GB T25000 51和GB T25000 10标准 2 CNAS标识 ILAC MRA国际互认标识 通常第三方测试
  • 职言|三年功能测试,一些测试工作的“吐槽”

    概述 社区里大部分都是测试开发的分享 作为功能测试 我也分享下日常工作中功能测试值得吐槽的问题 由于工作时间不长且未进过大厂 不了解大公司的工作模式和流程 所以自己的方法和理解都是基于中小公司的工作经验总结 应该适用于跟我一样的小白 没有各
  • JMeter 性能测试基本过程及示例

    jmeter 为性能测试提供了一下特色 jmeter 可以对测试静态资源 例如 js html 等 以及动态资源 例如 php jsp ajax 等等 进行性能测试 jmeter 可以挖掘出系统最大能处理的并发用户数 jmeter 提供了一
  • 抓包干什么用?

    抓包是一种网络分析工具 用于捕获和分析网络流量 它可以用于各种测试和调试场景 包括但不限于以下几个方面 1 网络故障排除 当网络出现问题时 抓包可以帮助你捕获和分析数据包 以确定问题的根本原因 你可以检查数据包的源和目标地址 协议 端口等信
  • 职言|三年功能测试,一些测试工作的“吐槽”

    概述 社区里大部分都是测试开发的分享 作为功能测试 我也分享下日常工作中功能测试值得吐槽的问题 由于工作时间不长且未进过大厂 不了解大公司的工作模式和流程 所以自己的方法和理解都是基于中小公司的工作经验总结 应该适用于跟我一样的小白 没有各
  • 开发&测试必须知道的 10种 常见软件架构模式

    2024软件测试面试刷题 这个小程序 永久刷题 靠它快速找到工作了 刷题APP的天花板 CSDN博客 文章浏览阅读2 1k次 点赞85次 收藏11次 你知不知道有这么一个软件测试面试的刷题小程序 里面包含了面试常问的软件测试基础题 web自
  • 车载测试相关理论知识

    学到了一些专用英文 BMS 电池管理系统 MCU 电机控制单元 GCU 增程器发电机控制器 OBC 车载充电机 DC DC 直流转换器 汽车上面涉及的控制器有 VCU 核心电子控制单元 BMS 电池管理系统 ECU 发动机 TCU MCU
  • 真的干不过,00后整顿职场已经给我卷麻了,想离职了...

    在程序员职场上 什么样的人最让人反感呢 是技术不好的人吗 并不是 技术不好的同事 我们可以帮他 是技术太强的人吗 也不是 技术很强的同事 可遇不可求 向他学习还来不及呢 真正让人反感的 是技术平平 却急于表现自己的人 每天加班到12点 在老
  • 软件测试|sqlalchemy relationship

    简介 SQLAlchemy是一个流行的Python ORM 对象关系映射 库 它允许我们以面向对象的方式管理数据库 在SQLAlchemy中 relationship 是一个重要的功能 用于建立表之间的关系 在本文中 我们将详细探讨 rel
  • 软件测试|pycharm关联GitHub的详细步骤

    简介 GitHub 是全球最大的开源代码托管平台之一 而 PyCharm 是一款强大的 Python 集成开发环境 将两者结合使用 可以提高团队协作和代码管理的效率 本文将详细介绍如何在 PyCharm 中管理 GitHub 账号 包括如何
  • 软件测试|教你使用Python下载图片

    前言 我一直觉得Windows系统默认的桌面背景不好看 但是自己又没有好的资源可以进行替换 突然我一个朋友提醒了我 网络上的图片这么多 你甚至可以每天换很多个好看的背景 但是如果让我手动去设置的话 我觉得太麻烦了 我不如使用技术手段将图片下

随机推荐

  • GB/T28181-2022针对H.265、AAC的说明和技术实现

    GB T28181 2022规范说明 GB T28181 2022相对来GB T28181 2016针对H 265 AAC的更新如下 更改了 联网系统通信协议结构图 媒体流通道增加了 H 265 G 722 1 AAC 见 4 3 1 20
  • 为Linux安装软件包时后面标注的arm,aarch到底是什么玩意儿以二进制安装docker-compose为例

    引言 装docker compose装不上 去github找二进制 看到这些版本人傻了 记录一下 如何确定自己的服务器应该安装哪个 Arch命令 arch 这个最简单 直接输出架构方式 aarch64 就是 ARM 架构 x86 64 就是
  • Spring注解家族介绍:@RestController

    前言 Spring Boot可以说是当前JAVA最为重要的一个框架 而Spring Boot的基石Spring中有着丰富的注解 因此我们会利用几篇文章来讲解我目前学到的各种注解 因此本类型文章的篇幅会比较短 主要着重于介绍各个注解 目录 前
  • GitHub十大Python项目推荐,Star最高26.4k

    编写 Python 代码的乐趣应该是看到简短 简洁 易读的类 这些类用少量清晰的代码来执行大量的操作 而不是那些让读者厌烦的大量琐碎代码 在相当长的一段时间内 世界各地的开发人员在他们的大多数项目中都倾向于使用 Python 编程语言的易用
  • C语言习题

    1 输入一个正整数 输出其逆数 例如输入12345 输出应为54321 2 计算1 2 3 n的值 n是从键盘输入的自然数 3 从终端 键盘 读入20个数据到数组中 统计其中正数的个数 并计算这些正数之和 4 从终端 键盘 将5个整数输入到
  • vue 看sass版本_看看不同的Sass架构

    vue 看sass版本 As the size and complexity of a project grows you require some sort of logic to structure your Sass files It
  • cloudfoundry简介

    cloudfoundry 负载均衡 对Router做负载均衡不属于Cloud Foundry的实现范围 Cloud Foundry只须保证所有Router都可以处理任何请求 而管理员可用DNS实现负载均衡 也可部署专用硬件来实现 或者简单点
  • Shell脚本中$0、$?、$!、$$、$*、$#、$@等符号的意义

    0 Shell本身的文件名 Shell最后运行的后台进程PID 当前脚本运行的进程PID 执行上一个指令的返回值 显示最后命令的退出状态 0表示没有错误 其他任何值表明有错误 所有参数列表 如 用双引号引起来的情况 以 1 2 n 的形式输
  • Flutter中使用sqlite

    在本教程中 我们将介绍如何在flutter中使用sqlite SQLite是用于移动设备和某些计算机SQL引擎 我们可以使用它来保存应用程序的数据 持久性存储对于在加载新数据时缓存网络呼叫和脱机应用程序很有用 引入依赖 查询sqflite最
  • git快速创建多个文件夹和文件

    小目标 创建多个文件夹 1 首先切换到想要创建文件夹的位置 点击右键 git Bash Here打开终端 输入下面一串 mkdir departments employees setting salarys social attendanc
  • C++ this指针详解

    this指针 this指针介绍 成员函数的参数和成员变量重名 this区分 在类的普通成员函数中返回对象本身 this指针介绍 1 this 指针是 C 实现封装的一 种机制 它将对象和该对象调用的成员函数连接在一起 在外部看来 每一个对象
  • jar包classes文件进阶版替换

    我相信大家在做项目的时候有时候看源码 或者想改源码代码的时候 一定是修改不了滴 今天教大家一个进阶版的修改jar源码包的方式 80 的人不知道怎么处理 因为通过解压方式 java zcvf 方式会导致清单文件不存在 从而缺少信息而不能打包
  • 全概率公式习题

    简单的记录下关于全概率公式的习题 我们可以先看下抓阄不分先后的一个例子 设袋中装有10个阄 其中8个是白阄 2个是有物之阄 甲 乙二人依次抓取一个 求没人抓得有物之阄的概率 设A B分别为甲 乙抓得有物之阄的事件 显然P A 2 10 下面
  • 【Git】OpenSSL SSL_read: Connection was aborted, errno 10053

    OpenSSL SSL read Connection was aborted errno 10053报错 解决办法 1 Git默认限制推送的大小 运行命令更改限制大小即可 增加缓冲 git config global http postB
  • 用axure给按钮图片等添加点击事件跳转页面

    由于公司产品离职 只能自己做了 汗 整体过程挺好理解的 拖拽一个图片 双击能设置背景图片 然后选中按钮 并双击OnClick 2 在弹出的视图中可以修改点击事件的名字 3 由于我这个是在当前页面弹出二级页面 所以点击Current Wind
  • python tk库

    tk库是 Python 的一个图形用户界面 GUI 库 可以用来创建窗口 菜单 按钮 文本输入框等 GUI 元素 可以通过它在 Python 中创建复杂的图形界面 使用 tk库时 需要先导入 tkinter 模块 然后使用 tkinter
  • python与vb可以互换吗_vb和python混合编程

    展开全部 解题思路 把 Python 设计成带命令行参数调用的形式 在 VB6 中借助 IWshRuntimeLibrary WshShell Exec 方法进行命令行参数调用 通过 IWshRuntimeLibrary WshExec S
  • 闲谈开闭原则——基于UI动画框架

    本文继续聊另外一个设计原则 开闭原则 在UI动画框架中 开闭原则在 动画策略 和 移动算法 这两个类体系中均有所体现 照旧 先看一下开闭原则的定义 1 开闭原则 一个软件实体如类 模块和函数应该对扩展开放 对修改关闭 有人说过 唯一不变的就
  • No artifacts marked for deployment 解决方法(ideaweb项目配置tomcat步骤)

    No artifacts marked for deployment 出现这种情况的原因 创建新项目的时候要先添加freework support 步骤如下 添加完成后点击添加tomcat的位置 有main的情况也不影响 接下来按下面步骤就
  • 【airtest架构】pytest+pocoui+airtest+allure 完成安卓UI自动化框架

    一 背景 为了做app的自动化 由于app元素定位麻烦或者定位不稳定 又或者使用驱动版本等原因 不想使用启动appnium服务的方式 本文采用网易的airtest框架图像识别作为基础 配合pytest进行简单的二次开发形成一套对安卓app