Appium+Python+PO 设计模式

目录

前言:

什么是 PageObject?

关于报告的输出

总结


前言:

Appium是一个用于自动化移动应用程序测试的开源工具,Python是一种简单易学且功能强大的编程语言,PO(Page Object)设计模式是一种在自动化测试中常用的设计模式。

什么是 PageObject?

  • 属于 selenium 的一种设计模式,套用在 appium 身上了(实践表明,合适,因为 selenium 和 appium"本是同根生")
  • 个人对于 PO 的理解就是,页面元素 - 页面业务操作步骤的方法 - 测试用例(我知道抽象,大家自行谷哥了解下)

下图是我的代码结构:
Data:测试数据。后期准备把代码中会所有测试数据都整合到 excel 或者 xml 内,Data 文件夹就是这个用处
PO:所有 Page。以 Base 页面为基础(看下图分析,来理解 PO)
Public:一些公共的方法,比如测试报告脚本,封装好的
Result:测试结果,包括测试报告和截图
TestCase:测试用例都放这儿
run_case:测试套件,利用 HTMLTestRunner.py,输出测试报告到/Result 下

Base 内重新封装的是基础的 webdriver 方法和一些你自己测试用例有需要的公用方法,PO 内的其他 Page 都是继承自 Base
appium 与 selenium 的唯一不同就是对 driver 的设置上

在这里 driver 的调用,我感觉自己还没写好,我的需求是只在 Base 内定义好 driver,指定好端口,所有测试用例共用一个 driver,直接在测试用例内调用,我调试过了,自己 python 水平也是一般,没改出来,后期我再改善一下这个。

直接在 Page 内封装整个业务流程的方法,测试用例中代码量会少很多。(当然写在测试用例中也是可以的)
简单说明下:

  • 场景:登录业务
  • Page 内:a.输入用户名 b.输入密码 c.点击登录按钮;A.登录方法(包含 abc)
  • 测试用例内: 1.直接调用 Page 的 A;2.顺序调用 Page 的 abc 这两种方式各有各的利弊,各取所需吧

测试用例我用的是 unittest
我这个 demo 没有写断言,没有打 log,测试数据也没有放到外部文件。这些都是后期要改善的

关于报告的输出

通过测试套件去驱动 HTMLTestRunner 生成测试报告,并且加入了截图功能。

总结

整体看来框架的搭建是很简单的,但也算是五脏俱全吧(好吧,还差几个,我知道啦)。个人觉得对于框架怎么搭,用哪种设计模式,用哪种工具,选择性还是很多的。跟 web 类似的啊,关键字,PO,RF......各取所需吧各位,而且,不同的设计模式下,代码结构如何,也是看各人选择的。

  作为一位过来人也是希望大家少走一些弯路

在这里我给大家分享一些自动化测试前进之路的必须品,希望能对你带来帮助。

(软件测试相关资料,自动化测试相关资料,技术问题答疑等等)

相信能使你更好的进步!

点击下方小卡片

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

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

相关文章

使用shell监控应用运行状态通过企业微信接收监控通知

目的:编写shell脚本来监控应用服务运行状态,若是应用异常则自动重启应用通过企业微信接收监控告警通知 知识要点: 使用shell脚本监控应用服务使用shell脚本自动恢复异常服务通过企业微信通知接收监控结果shell脚本使用数组知识,…

session 生命周期和经典案例-防止非法进入管理页面

文章目录 session 生命周期和Session 经典案例-防止非法进入管理页面session 生命周期Session 生命周期-说明代码演示说明 Session 的生命周期创建CreateSession2创建ReadSession2 解读Session 的生命周期代码示例创建DeleteSession Session 经典案例-防止非法进入管理页面需求…

bgp联邦

1、ip配置 [r1-LoopBack0]ip address 192.168.1.1 24 [r1-LoopBack1]ip address 10.0.0.1 24 [r1-GigabitEthernet0/0/0]ip address 12.0.0.1 24[r2-GigabitEthernet0/0/0]ip address 12.0.0.2 24 [r2-GigabitEthernet0/0/1]ip address 172.16.1.1 29 [r2-GigabitEthernet0/0/…

【从零开始学习CSS | 第三篇】选择器优先级

目录 前言: 常见选择器的优先级(从高到低) 选择器的权重: 总结: 前言: 在前几篇文章中我们介绍了大量的选择器,那么大量的选择器在使用的时候,一定是有一个优先级顺序的&#xff…

【计算机视觉】DINOv2(视觉大模型)代码使用和测试(完整的源代码)

文章目录 一、环境部署二、导入原图2.1 使用vit_s14的模型 三、使用其他模型3.1 使用vit_b14的模型3.2 使用vit_l14的模型3.3 使用vit_g14的模型 一、环境部署 !git clone https://ghproxy.com/https://github.com/facebookresearch/dinov2.git输出为: Cloning in…

DT灯光基础(辉光 雾 阴影 渲染选项)

点光源 不能宣染,换个版本。不能正常预览 聚光灯 t 手柄 挡光版 平行光阴影 光线追踪阴影 没有看见阴影 灯光使用贴图 环境光 不进行渲染物体 不渲染阴影 接收阴影 不反射 可以看到反射 没有反射了 灯光链接 取消灯照 灯光雾 辉光 变化不明显

C++初阶 - 3.类和对象(中)

目录 1.类的6个默认成员函数 2.构造函数 2.2特性 3.析构函数 3.1 概念 3.2 特性 4. 拷贝构造函数 4.1 概念 4.2 特征 5.赋值运算符重载 5.1运算符重载 5.2 赋值运算符重载 5.3 前置和后置重载 6.日期类的实现 7.const成员 8.取地址及const取地址操作符重载 1.类…

FCOS 论文学习

1. 解决了什么问题? 之前的目标检测器如 RetinaNet、SSD、YOLOv3 都依赖于 anchors。基于 anchors 的检测器有如下三个缺点: 检测表现对于 anchors 的大小、宽高比和数量等超参数很敏感;即使精心设计了 anchors,但由于大小和宽高…

EasyCVR告警类型设置后首页需要刷新才能更新的问题优化

EasyCVR视频融合平台基于云边端一体化架构,可支持多协议、多类型设备接入,包括:NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。平台具有强大的数据接入、处理及分发能力,可在复杂的网络环境中&#xff0c…

Zabbix 自动发现及注册

1、依次选择 Configuratio、Discovery、Create discovery rule(配置、自动发现、创建发现规则) 创建客户端发现规则 2、zabbix客户端安装 agent zabbix客户端一键安装脚本 脚本参考链接 #!/bin/bash #Zabbix-Agent 5.0Zabbix_Service192.168.63.20#安…

【PHP面试题44】PHP5的版本和PHP7之间有哪些区别

文章目录 一、前言二、底层调整2.1性能提升2.2 新的引擎2.3 数据类型改进2.4 错误处理改进2.5 语言特性增加 三、应用层差异3.1 兼容性3.2 类和方法改进3.3 错误处理机制3.4 性能优化3.5 新的扩展支持 四、一些语法糖示例4.1 标量类型声明示例4.2 新增了Spaceship操作符&#x…

win11中的pagefile.sys

在C盘系统下,有一个命名为pagefile.sys的文件占用C盘太大的空间,不少用户怕删除pagefile.sys文件之后会对系统造成影响,而不少用户想要将pagefile.sys文件移动到D盘中。那么pagefile.sys是什么文件?Win10系统下pagefile.sys文件太…

【C++】list的模拟实现

🌇个人主页:平凡的小苏 📚学习格言:命运给你一个低的起点,是想看你精彩的翻盘,而不是让你自甘堕落,脚下的路虽然难走,但我还能走,比起向阳而生,我更想尝试逆风…

5. MySQL - JDBC SQL 注入 博客系统(万字详解)

目录 1. 介绍 2. 使用 JDBC 连接数据库 2.1 如何使用 JDBC 连接数据库 2.2 导入的各个类 2.3 DataSource 对象的创建 2.4 从 DataSource 对象中得到 Connection 对象 2.5 创建 Statement 对象 2.6 从 ResultSet 中遍历每行结果,从每行中获取每列的值 2.7 代…

EIK+Filebeat+Kafka

目录 Kafka 概述 为什么需要消息队列(MQ) 使用消息队列的好处 消息队列的两种模式 Kafka 定义 Kafka 简介 Kafka 的特性 Kafka 系统架构 Partation 数据路由规则: 分区的原因 部署 kafka 集群 1.下载安装包 2.安装 Kafka 修改配…

B072-项目实战-用户模块--前台登录 三方登录

目录 前台登录-账号登录前端完成左上角显示用户信息配置前置拦截器、后置拦截器和不受限资源拦截器 三方登录-微信登录概述流程图用法代码实现步骤分析:实现准备代码前端login.htmlcallback.html 后端LoginController-微信登录LoginServiceImpl-微信登录解决回调域名不能跨域绑…

安达发|某大厂使用APS计划排程真实成功案例

在很多群里、朋友圈、公众号上可以看到,很多精益咨询老师认为,不仅ERP不啥用,APS更是无聊之举,而且肯定是用不好的。但,事实上可能还真不是这样的。 一个深圳的客户,用了APS以后,不仅装配的齐套…

桥梁监测需要哪些设备?

随着我国经济的发展,我国桥梁建设也迈上了新的台阶。截至2022年底,我国的公路桥梁总数达到了103.32万座。然而,随着在役桥梁使用时间的增长,承载能力受到荷载、环境以及结构退化等因素的影响,桥梁安全问题日益凸显。桥…

vue3和gin框架实现简单的断点续传

vue3和gin框架实现简单的断点续传 前端代码 Test.vue <template><div><inputtype"file"ref"uploadRef"change"upload"multiple/><templatev-for"item in fileList":key"item.key"><br><…

spring复习:(39)注解方式的ProxyFactoryBean

一、定义接口 package cn.edu.tju.study.service;public interface MyService {void myMethod(); }二、定义实现类&#xff1a; package cn.edu.tju.study.service;public class MyServiceImpl implements MyService{Overridepublic void myMethod() {System.out.println(&qu…