ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

web自动化-PO模式

2022-07-19 21:33:04  阅读:176  来源: 互联网

标签:web HTMLTestRunner unittest page 自动化 方法 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有