UI自动化之分层思想pom模式

摘要:
例如,我们需要返回主页。方法名为gotoHomePage()。通过方法名可以清楚地知道具体的函数实现。最后,我的名字叫肖峰,是一群与测试人员一起成长的伙伴,他们正在考虑一夜暴富!小组可以收到软件测试工厂的最新面试材料以及Python自动化、接口和框架构建的学习材料!

1.什么是POM
页面对象模型(POM)是一种设计模式,用来管理维护一组web元素集的对象库;
在POM下,应用程序的每一个页面都有一个对应的page class;

每一个page class维护着该web页的表现层和操作层;
page class中的方法命名最好根据其对应的业务场景进行,

例如通常登录后我们需要等待几秒中,我们可以这样命名该方法: waitingForLoginSuccess().

2.POM优点
2.1.POM提供了一种在UI层操作、业务流程与验证分离的模式,这使得测试代码变得更加清晰和高可读性
2.2.对象库与用例分离,使得我们更好的复用对象,甚至能与不同的工具进行深度结合应用
2.3.可复用的页面方法代码会变得更加优化
2.4.更加有效的命名方式使得我们更加清晰的知道方法所操作的UI元素。
例如我们要回到首页,方法名命名为: gotoHomePage(),通过方法名即可清晰的知道具体的功能实现。

3.POM模式结构
project–项目名称
common–公共方法
base.py–selenium方法二次封装
page–封装项目所有页面,每一个pageClass都继承Base类
loginpage.py–登录页面封装
homepage.py–首页封装
script–业务流程/测试用例
test_login.py–登录功能测试用例;登录流程,引用page中的loginpage文件
data–存放测试数据
excel
txt
yaml
config–存放配置文件
log–测试脚本日志文件
report–测试报告
run_case.py执行用例

4.测试用例管理
unittest
编写测试用例:
特殊方法:
setUp:在测试用例执行前执行
tearDown:在测试用例执行后执行
setUpClass:在测试类中的所有测试用例执行前执行一次,并需要@classmethod装饰器
tearDownClass:在测试类中的所有测试用例执行后执行一次,并需要@classmethod装饰器
测试用例编写:
每个测试用例必须以test开头
测试用例执行顺序按照ASCII码顺序执行,与编写顺序无关
跳过测试:skip跳过测试类,跳过测试方法
断言:assert
执行测试用例run_case.py:
在当前文件执行:unittest.main()
批量执行:
测试套件:
discover = unittest.defaultTestLoader.discover(用例目录,pattern=‘用例文件.py’)
测试执行:
测试文件名称:
report_file = “测试报告文件路径+名称”
with open(report_file,“wb”)as fp:
runner = HTMLTestRunner.HTMLTestRunner(title=‘自动化测试报告’,
description=‘用例执行情况:’,
stream=fp,
verbosity=2
)
runner.run(discover)

5.测试数据管理
对于账号密码,这种管全局的参数,可以用命令行参数,单独抽出来,写的配置文件里(如ini)
对于一些一次性消耗的数据,比如注册,每次注册不一样的数,可以用随机函数生成
对于一个接口有多组测试的参数,可以参数化,数据放yaml,text,json,excel都可以
对于可以反复使用的数据,比如订单的各种状态需要造数据的情况,可以放到数据库,每次数据初始化,用完后再清理
对于邮箱配置的一些参数,可以用ini配置文件
对于全部是独立的接口项目,可以用数据驱动方式,用excel/csv管理测试的接口数据
对于少量的静态数据,比如一个接口的测试数据,也就2-3组,可以写到py脚本的开头,十年八年都不会变更的
6.代码管理
Git

7.持续集成
Jenkins:
安装,部署,新建项目,配置项目,定时任务…

最后
俺叫小枫,一个成天想着一夜暴富的测试员

(1140267353)一起成长一起加油的伙伴群!软件测试,与你同行!
群内可领取最新软件测试大厂面试资料和Python自动化、接口、框架搭建学习资料!
————————————————
版权声明:本文为CSDN博主「程序员-小枫」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_49346599/article/details/108520638

免责声明:文章转载自《UI自动化之分层思想pom模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇一起谈.NET技术,给大家分享两款正在使用的reflector插件 狼人:MySQL中随机生成固定长度字符串的方法下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

pytest 基本用法

1、断言用assert,可以进行==,!=,+,-,*,/,<=,>=,is True、False,is not True、False ,in ,not in 等判断。 import pytestdef add(a,b): return a + bdef is_prime(n): if n <= 1: retur...

pytest实例

一、题目:       实现一个测试用例集合,包含3个类TestA TestB TestC,每个类包含3个方法,总共9个方法test_1到test_9,完成特定动作只要print打印即可。执行顺序如下:       1、测试module开始执行       2、TestA       3、TestA teardown清理环境       4、TestB每个...

黑盒之测试用例设计策略

测试用例设计策略  在测试用例的设计过程中,通常为了要达到最优的覆盖,要采用多种不同的测试用例设计方法,其中比较有名的是, Myers提出了使用各种测试方法的综合策略:1、在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强;2、必要时用等价类划分方法补充一些测试用例;3、用错误推测法增加一些测试用例;4、检查已设计出...

unittest---unittest错误截图

  在做自动化的过程中,大多数执行者都不在旁边,那么如果用例失败了我们通常看报告上的失败信息,但是这样有时候可能不够清楚的判断到底哪里出了错误,我们还可以通过自动截图的功能,判断用例走到哪里出了错误。 截图方法 在自动化中截图方法有几种,我们一个个来看,那种最适合我们。 方法1:get_screensho t_as_file(self,filename)...

unittest与pytest的区别

1、pytest可以根据标签自动设别测试用例 2、断言简洁 assert+表达式,而unittest需调用内部函数,如assertEqual 3、pytest可设置会话级、模块级、类级、函数级的fixtures,即用yield分割:数据准备和数据清理工作(前置后置) 4、pytest有多种插件可以集成,如reruns重运行、allure测试报告的集成等。...

Web测试——翻页功能测试用例

参考:https://wenku.baidu.com/view/e6462707de80d4d8d15a4f1e.html?rec_flag=default&mark_pay_doc=2&mark_rec_page=1&mark_rec_position=5&mark_rec=view_r_1&clear_uda_p...