1.POM是什么
 pom 其实就是 ui自动化的时候,把 界面 分割为一个个部分, 每个部分有专门的 类 或者模块  负责其界面的操作。
这样,可以把  自动化逻辑  分成2层
一层 是 对应测试用例的 测试逻辑, 一层是底层的自动化操作动作 
好处就是当界面产生变化的时候, 测试逻辑通常可以保持不变

 

2.POM优点
1.POM提供了一种在UI层操作、业务流程与验证分离的模式,这使得测试代码变得更加清晰和高可读性

2.对象库与用例分离,使得我们更好的复用对象,甚至能与不同的工具进行深度结合应用

3.可复用的页面方法代码会变得更加优化

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:
安装,部署,新建项目,配置项目,定时任务…