其他分享
首页 > 其他分享> > web自动化-PO模式

web自动化-PO模式

作者:互联网

今日目标:
1. 基于unittest框架跳过测试 函数
2. 生成html报告
3. PO模式

一、跳过用例
分类:
1. 直接跳过
语法:@unittest.skip(说明)
场景:一般适合功能未实现完成用例
2. 条件满足跳过
语法:@unittest.skipIf(条件, 原因)
场景:一般判断条件满足,就不执行;如:达到指定版本,此功能失效;
提示:
以上两种方式,都可以修饰函数和类;

 

 

二、HTML测试报告
HTML报告:根据TextTestRunner改编而来
操作:
1. 导包
from xx.HTMLTestRunner import HTMLTestRunner
2. 定义测试套件
suite = unittest.defaultTestLoader.discover("../case", pattern="test*.py")

3. 实例化HTMLTestRunner类,并调用run方法执行测试套件。
with open(报告存放路径, "wb") as f: #注意:生成html报告,必须使用wb,以二进制形式写入
# 实例化HTMLTestRunner类
HTMLTestRunner(stream=f).run(测试套件)

三、PO模式
版本:
v1:不采用任何模式(线性模型)
v2:采用测试框 unittest
v3:业务代码和页面对象进行
v4:实际中的po模式编写

案例:
tpshop登录
1. 账号不存在
2. 密码错误

问题:
v1:无法批量运行
v2: 业务脚本与页面对象没有分开
v3: 代码冗余量太大

PO介绍:
PO: page(页面) object(对象)


v4版本:
结构:

 

 


1. base(基类):page页面一些公共的方法;
# Base类
# 初始化方法
# 查找元素方法
# 点击元素方法
# 输入方法
# 获取文本方法
# 截图方法
注意:
1. 以上方法封装时候,解包只需1此,在查找元素解包;
2. driver为虚拟,谁调用base时,谁传入,无需关注从哪里来;
3. loc:真正使用loc的方法只有查找元素方法使用;
base基类:

 

 


2. page(页面对象):一个页面封装成一个对象;
应用:继承base;
实现:
1. 模块名:page+实际操作模块名称 如:page_login.py
2. 页面对象名:以大驼峰方法将模块名抄进来,有下划线去掉下划线
3. 方法:涉及元素,将每个元素操作单独封装一个操作方法;
4. 组装:根据需求组装以上操作步骤;

 

    

 

 


3. scripts(业务层):导包调用 page页面
实现:
1. 模块:test+实际操作模块名称 如:test_login.py
2. 测试业务名称:以大驼峰方法将模块名抄进来,有下划线去掉下划线
3. 方法:
1. 初始化方法 setUp() 注:在unittest框架中不能使用def __init__()初始化方法;
# 实例化 页面对象
# 前置操作 如:打开等等
2. 结束方法 teardown
# 关闭驱动
3. 测试方法
# 根据要操作的业务来实现

 

 

扩展:
loc变量:类型为元组 ;*loc为解包;

 

 

标签:web,HTMLTestRunner,unittest,page,自动化,方法,PO,页面
来源: https://www.cnblogs.com/yumi2021/p/16495832.html