框架:

1.PO模式应用(测试对象和测试用例分离)(写到简历中)

2.引入ddt

3.深入分层:测试数据分离

4.遵循原则:测试用例的独立性

5.深入分层:元素定位分离

6.框架优化:提取basepage,具备处理异常 日志 截图功能

7.框架优化:使用pytest单元测试框架

8.Jenkins集成,分布式部署

为什么要把业务逻辑从测试逻辑里抽离出来?

-PO模式 PageObject 页面中封装成一个对象 ==》

例如:1,DOM document Object Model(将HTML文档表示成js的对象) document.getElement...获取内容

2,WebElement==>将html的标签表示成python的object对象,web_ele.text web_ele.get_attribute()来访问属性

3,DOM-->python 的object对象,这就是PO模式的由来

--PageObject==》1.WebElement(元素) 2.元素操作(点击,拖拽) 均属于PageObject的组成部分,(就是一个页面一个文件封装)

  • PO模式是一种自动化测试设计模式,将业务逻辑和测试逻辑分开,也就是把对象的定位和测试脚本分开,从而提高可维护性。(换个项目只要改写业务逻辑不用改动测试逻辑)
  • 使业务更清晰
  • 代码更利于维护
  • 可以复用

首页里面的逻辑封装到一个页面 --HomePage

--方法和逻辑封装到登陆页面 --LoginPage

投资BidPage,蜂群 UserPage

原理:

将页面的元素定位和元素行为封装成一个page类

类的属性:元素的定位

类的行为:元素的操作

页面对象和测试用例分离

测试用例:调用页面所需对象的行为,组成测试用例

好处:

  • 当某个页面的元素发生变化,只需要修改该页面对象中的代码即可,测试用例不需要修改--可维护性
  • 提高代码重用率,结构清晰,维护代码更容易
  • 测试用例发生变化时,不需要或只需要修改少数页面对象代码即可--复用性

为什么不能用函数封装?
# 多个不同的函数都公用一个形参,共享的实际参数可以作为一个属性
# 在类中属性表示共同特征
# 不利于在多个函数之间共享变量

#类就是这种共享数据的一种形式
---那么以上是可以封装成一个类的, class LoginPage

PO模式
PO是Page Object的缩写,PO模式是自动化测试项目开发实践的最佳设计模式之一。
核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化, 只
需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。
PO模式可以把一个页面分为三层,对象库层、操作层、业务层。
对象库层:封装定位元素的方法。
操作层:封装对元素的操作。
业务层:将一个或多个操作组合起来完成一个业务功能。比如登录:需要输入帐号、密码、点
击登录三个操作。
2.1 引入PO模式的好处
引入PO模式前
存在大量冗余代码
11黑马程序员-软件测试
业务流程不清晰
后期维护成本大
引入PO模式后
减少冗余代码
业务代码和测试代码被分开,降低耦合性
维护成本降低

ddt数据驱动:每个测试数据相互独立(解决的问题)

用try except可以接受抛出的异常用例,继续执行后续用例,否则一条用例失败,后面的用例都无法执行

PO模式学习笔记的更多相关文章

  1. SQL反模式学习笔记1 开篇

    什么是“反模式” 反模式是一种试图解决问题的方法,但通常会同时引发别的问题. 反模式分类 (1)逻辑数据库设计反模式 在开始编码之前,需要决定数据库中存储什么信息以及最佳的数据组织方式和内在关联方式. ...

  2. SQL反模式学习笔记5 外键约束【不用钥匙的入口】

    目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外 ...

  3. SQL反模式学习笔记3 单纯的树

    2014-10-11 在树形结构中,实例被称为节点.每个节点都有多个子节点与一个父节点. 最上层的节点叫做根(root)节点,它没有父节点. 最底层的没有子节点的节点叫做叶(leaf). 中间的节点简 ...

  4. SQL反模式学习笔记2 乱穿马路

    程序员通常使用逗号分隔的列表来避免在多对多的关系中创建交叉表, 将这种设计方式定义为一种反模式,称为“乱穿马路”. 目标:  存储多属性值,即多对一 反模式:将多个值以格式化的逗号分隔存储在一个字段中 ...

  5. SQL反模式学习笔记4 建立主键规范【需要ID】

    目标:建立主键规范 反模式:每个数据库中的表都需要一个伪主键Id 在表中,需要引入一个对于表的域模型无意义的新列来存储一个伪值,这一列被用作这张表的主键, 从而通过它来确定表中的一条记录,即便其他的列 ...

  6. SQL反模式学习笔记6 支持可变属性【实体-属性-值】

    目标:支持可变属性 反模式:使用泛型属性表.这种设计成为实体-属性-值(EAV),也可叫做开放架构.名-值对. 优点:通过增加一张额外的表,可以有以下好处 (1)表中的列很少: (2)新增属性时,不需 ...

  7. SQL反模式学习笔记7 多态关联

    目标:引用多个父表 反模式:使用多用途外键.这种设计也叫做多态关联,或者杂乱关联. 多态关联和EAV有着相似的特征:元数据对象的名字是存储在字符串中的. 在多态关联中,父表的名字是存储在Issue_T ...

  8. SQL反模式学习笔记8 多列属性

    目标:存储多值属性 反模式:创建多个列.比如一个人具有多个电话号码.座机号码.手机号码等. 1.查询:多个列的话,查询时可能不得不用IN,或者多个OR: 2.添加.删除时确保唯一性.判断是否有值:这些 ...

  9. SQL反模式学习笔记9 元数据分裂

    目标:支持可扩展性.优化数据库的结构来提升查询的性能以及支持表的平滑扩展. 反模式:克隆表与克隆列 1.将一张很长的表拆分成多张较小的表,使用表中某一个特定的数据字段来给这些拆分出来的表命名. 2.将 ...

随机推荐

  1. Vue 事件的高级使用方法

    Vue 事件的高级使用方法 事件方法 在Vue中提供了4中事件监听方法,分别是: $on(event: string | Array, fn) $emit(event: string) $once(e ...

  2. 秒懂JVM的三大参数类型,就靠这十个小实验了

    秒懂JVM的三大参数类型,就靠这十个小实验了 你好,我是悟空哥,「7年项目开发经验,全栈工程师,开发组长,超喜欢图解编程底层原理」.手写了2个小程序,Java刷题小程序,PMP刷题小程序,已发布到公众 ...

  3. [POJ1050]To the Max(最大子段和)

    题目链接 http://poj.org/problem?id=1050 题意 求最大子矩阵和. 题解 即求二维的最大子段和.二维数组sumRec[I][j]存储原始数组数据rec[0][j] to r ...

  4. 内存管理初始化源码2:setup_arch

    PFN相关宏说明: /* kernel/include/linux/pfn.h */ PFN : Page Frame Number(物理页帧) /* * PFN_ALIGN:返回地址x所在那一页帧的 ...

  5. JS进阶 | 解决JQ keyup事件延迟的问题

    写在前面 在使用keyup事件时,存在一个问题,假如想要做出类似于表单验证的demo:表单输入账号 “xxx” 后  再去ajax异步去后台数据库匹配,但是keyup事件的原理是每次键盘事件弹起就会检 ...

  6. JVM强引用、软引用、弱引用、虚引用、终结器引用垃圾回收行为总结

    JVM引用 我们希望能描述这样一类对象: 当内存空间还足够时,则能保留在内存中:如果内存空间在进行垃圾收集后还是很紧张,则可以抛弃这些对象. -[既偏门又非常高频的面试题]强引用.软引用.弱引用.虚引 ...

  7. Windows上使用jekyll+github搭建免费博客

    jekyll+github搭建个人博客 (一)下载Ruby (二)安装jekyll (三)开启jekyll服务器 (四)使用github展示博客 一.下载Ruby Ruby,一种简单快捷的面向对象(面 ...

  8. linux学习(九)Linux知识点汇总

    一.基础概念 Q:linux是什么?  Linux是一种基于UNIX的操作系统,它基于Linux内核,常被用作服务器的操作系统. Q:UNIX和LINUX有什么区别? Unix:收费的,商用的,拥有许 ...

  9. Android如何使用注解进行代码检查

    原文首发于微信公众号:躬行之(jzman-blog),欢迎关注交流! Android Studio 内置了代码检查工具 Lint,可在菜单栏选择 Analyze > Inspect Code 执 ...

  10. 有关Kafka的那些事

    Kafka基本概念 Producer: 消息和数据的生产者,向kafka的一个topic发布消息的进程.代码.服务. Consumer:消息和数据的消费者,订阅数据并且处理器发布的消息的进程.代码.服 ...