Python + Appium框架原生代码实现App自动化测试

Step1:首先介绍下python+appium的框架结构

如下截图所示

.

(1):apk目录主要放置待测app的apk资源;

(2):config目录主要放置配置文件信息,包含:数据库连接配置、UI自动化脚本中所需的页面元素信息及app启动信息、自动化报告邮件发送配置信息、接口请求的对应的url信息等【大家可根据待测app的功能添加或减少配置文件信息】。

(3):report目录主要放置测试完成后生成的测试报告信息;

(4):src目录下包含的目录如下

       common目录:app启动方法的封装文件信息;数据库增删改查实际方法的封装文件信息;读取config配置文件中元素信息的工具类方法;日志类的封装方法;发送邮件的配置文件信息【大家可根据待测app的具体功能添加或减少公共方法类】;

        functions目录:对于自动化测试过程中需要对页面元素进行获取的方法工具类的封装;

        log目录:每次执行测试脚本后生成的日志信息会存放到该目录下;

        runner目录:生成测试报告的公有方法的引用;自动化脚本的批量执行配置信息;

        testcase目录:待测app具体的需测试功能点的测试脚本代码信息;

Step2:接下来介绍的是框架目录下每个文件的具体内容

(1):依据上面截图可对应到step1中描述的各个目录下所包含的文件的具体功能;

(2):常用的方法就不再赘述,下面将介绍几个不常见的.py文件进行具体内容的详细讲解:

       【1】config目录中的element.ini文件内容如下(主要存放页面元素信息):

        上面截图中展示的是登录被测app时,需要获取到页面上的元素的信息,可以使用id,class,xpath等方法,具体的定位元素的方法可以依据待测app来选择,只要可以获取到元素信息即可(请按照截图中的格式来定义)。

  【2】src目录下common目录下的appium_start文件内容如下(appium服务启动封装文件):

   该文件会引用iniHelper文件对element.ini文件页面元素信息的获取信息,来获得启动时必需的参数信息,后面会具体贴出iniHelper文件的内容,建议大家动手敲下示例代码,印象会更深刻。

      【3】src目录下common目录下的iniHelper文件内容如下(读取ini配置文件工具类):

    该.py文件中iniHelper方法主要是获取ini配置文件中单个属性的值;

        该.py文件中ini_sections方法主要是获取ini配置文件中某个功能模块所有的属性名称和对应的值,以字典的格式返回结果;

     【4】src目录下functions目录下的baseAction文件内容如下(页面基本元素获取方法的封装):

      该文件内容对于页面元素定位的方法进行封装,此示例共例举了7种元素定位方法,在测试过程中如果有其他定位方法可自行添加到该方法中。

      【5】src目录下testcase目录下的app_checklist文件内容如下(具体待测功能的自动化脚本编写):

      此处示例以登录功能为例,先获取登录所需元素信息,包含基本的用户名和密码、登录提交等元素信息,获取到元素信息后再对元素进行模拟操作,如:直接点击、输入测试数据、清除测试数据等操作,登录完成后需要校验是否登录成功,并记录相应的日志信息。

Step3:整体思路说明

(1):使被测功能的脚本代码更加简洁,方便维护脚本,需要将测试数据与程序进行分离;

(2):页面元素信息可以封装到配置文件中,并封装对应的读取配置文件的方法,在测试脚本需要使用时直接调用;

(3):公共方法类,如:数据库连接配置信息及对数据库进行增删改查操作时,都可以封装到公共方法中,便于维护,使用时直接引用即可;

(4):具体实际操作过程中,可以依据具体测试需求对框架作出相应的调整,目的是让脚本更加清晰化,且便于维护,易于推广给测试同行使用;

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

根据源码梳理Redisson的可重入、锁重试以及看门狗机制原理

Redisson可重入的原理 在上篇文章中我们已经知道了除了需要存储线程标识外,会额外存储一个锁重入次数。那么接下来我们查看使用Redisson时,Redisson的加锁与释放锁流程图。 当开始获取锁时,会先判断锁是否存在,如果存在再进行判断…

unity程序中的根目录

在unity程序中如果要解析或保存文件时,其根目录为工程名的下一级目录,也就是Assets同级的目标

使用Redis构建简易社交网站(2)-处理用户关系

目的 本文目的:实现用户关注和取消关注功能。(完整代码附在文章末尾) 相关知识 在我之前的文章 《使用Redis构建简易社交网站(1)-创建用户与动态界面》中提到了如何实现简易社交网站中创建新用户和创建新动态功能。 那这篇文章将教会你掌…

代币化:2024年的金融浪潮预示着什么?

自“TradFi”领袖到加密专家,各方预测代币化机会高达数十万亿。虽然已有引人注目的用例,但与未来几年可能在链上转移的大量数字化资产相比,这些仅是冰山一角。 代币化何时会变为洪流?什么阻碍了其发展? 今年10月&…

网络初识:局域网广域网网络通信基础

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、局域网LAN是什么?二、广域网是什么:三. IP地址四.端口号五.认识协议5.1五元组 总结 前言 一、局域网LAN是什么? 局域网…

JVM简单了解内存溢出

JVM oracle官网文档:https://docs.oracle.com/en/java/javase/index.html 什么是JVM JVM(Java Virtual Machine)原名Java虚拟机,是一个可以执行Java字节码的虚拟计算机。它的作用是在不同平台上实现Java程序的跨平台运行,即使在不同的硬件…

【驾校管理系统源码】基于Springboot+Vue个人驾校预约管理系统

🍅 简介:500精品计算机源码学习 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 文末获取源码 目录 一、以下学习内容欢迎领取: Eclipse运行教学: Idea运行项目教学: Pycharm调试项目教学&#…

用Python手把手教你实现一个爬虫(含前端界面)

目录 前言爬虫基本原理使用Python的requests库发送HTTP请求使用BeautifulSoup库解析HTML页面使用PyQt5构建前端界面实现一个完整的爬虫程序结语 前言 随着互联网的飞速发展,再加上科技圈的技术翻天覆地的革新,互联网上每天都会产生海量的数据&#xff…

数据库更换版本

目录 0.前言 1.官网下载MySQL 2.配置初始化文件my.ini 3.初始化MySQL 4.安装mysql服务并启动修改密码 5.配置环境变量​编辑 0.前言 心累,为了完成实验,必须使用8.0版本导致我更新版本的时候,把sqlyog干崩溃了,什么版本不兼…

分清社保、医保、新农合

社保中的大头是养老保险,从上图可知成都每个月最低849.2元,对于底层人民来说价格不菲,但对应的医保才107元,那么能不能只交医保呢? 分三种情况: 1、如果我们购买的是城镇职工医疗保险,公司买的也…

<JavaEE> 单例模式的两种实现:“饿汉模式”和“懒汉模式”

目录 一、单例模式概述 二、“饿汉模式”实现单例模式 三、“懒汉模式”实现单例模式 3.1 单线程下的“懒汉模式” 3.2 多线程下的“懒汉模式” 一、单例模式概述 1)什么是单例模式? 单例模式是一种设计模式。 单例模式可以保证某个类在程序中只存…

电源自动测试系统| 电源模块温度循环怎么测试?

在一些应用领域,电源模块会在极端环境温度条件下工作。为了确保电源在高低温环境下可以正常运行,满足设备需求,需要对电源模块进行温度循环测试。 温度循环测试是指电源模块经过升温、保温、降温等多次循环试验来检测其在温度变化下的耐热性、…

解决在Linux中进行redis的主从复制时出现的从机可以获取到主机的信息,主机获取不到从机的信息~

主机: 从机1: 从机2: 出现上述的原因是我在redis.conf中设置了密码,那么就导致了我在进行主从复制时,需要进行密码验证,然后我在网上查阅了很多资料,有的说让在从机中指定密码,有的说…

HarmonyOS开发上手

首先献出开发官网地址 (https://developer.harmonyos.com/cn/develop/) 本文内容 基础入门内容介绍安装DevEco StudioDevEco Studio常用功能介绍项目工程结构详解 1. 基础入门内容介绍 应用开发流程 在正式开始之前还需要了解一些有关的基础概念 方舟…

出现数据库出现没有时间格式的错误,实体类Date类型不对导致时间报错

目录 报错现场解决办法java与mysql中的日期类型及二者的对应关系和使用场景 报错现场 数据库最早时间为2023年1月1日,前端查询后却出现2022年12月31日的数据 数据库时间类型为date swagger接口测试 解决办法 讲until的Date改成sql类的Date,就可以了…

茄子科技张韶全:跨多云大数据平台DataCake在OceanBase的实践

11 月 16 日,OceanBase 在北京顺利举办 2023 年度发布会,正式宣布:将持续践行“一体化”产品战略,为关键业务负载打造一体化数据库。其中,在“数字化转型升级实践专场”,我们有幸邀请到了茄子科技大数据技术…

MYSQL练题笔记-聚合函数-各赛事的用户注册率

一、题目相关内容 1)相关的表 2)题目 3)帮助理解题目的示例,提供返回结果的格式 二、自己初步的理解 有两张不同左右的表,用户表和赛事注册表。然后解题。 1.各种赛事的用户注册百分率 各种赛事的意味着通过contes…

ES6 import

这里 import 的文件是项目内自己 export 的对象,并非 package.json 里引用的包。 后者的打包策略和配置有关。 原理:彻底理解JavaScript ES6中的import和export - 知乎

深度学习(五):pytorch迁移学习之resnet50

1.迁移学习 迁移学习是一种机器学习方法,它通过将已经在一个任务上学习到的知识应用到另一个相关任务上,来改善模型的性能。迁移学习可以解决数据不足或标注困难的问题,同时可以加快模型的训练速度。 迁移学习的核心思想是将源领域的知识迁…

YOLOv8改进有效涨点 | 2023 | SPD-Conv空间深度转换卷积(高效空间编码技术)

一、本文介绍 本文给大家带来的改进内容是SPD-Conv(空间深度转换卷积)技术。SPD-Conv是一种创新的空间编码技术,它通过更有效地处理图像数据来改善深度学习模型的表现。SPD-Conv的基本概念:它是一种将图像空间信息转换为深度信息…