目录
我们在做自动化的时候应该都听过PO模型,那么什么是PO模型呢?PO模型在自动化中的作用是什么呢?
PO模型
PO其实就是:、Page Object Model,也称作为POM模型,PO其实是一种设计模式,已经在自动化测试中流行起来,以增强测试维护并减少代码重复。页面对象是面向对象的类,用作页面的接口和被测设备。 然后,只要测试需要与该页面的UI进行交互,这些测试便会使用该页面对象类的方法,其好处在于,如果页面的UI发生了更改,则无需更改测试本身,只需更改其中的代码即可。页面对象需要更改。 随后,所有支持该新UI的更改都位于一个位置。其实说到低就是一句话:把每一个页面当作一个类,把页面上的元素信息和代码操作分离开,然后方面后面我们进行管理代码和元素内容
PO分层
PO分层也就是对我们自动化代码进行分层具体可以分为以下基层
1、基础层:封装一些定位方法,点击,输入,滑动等操作
2、公用层:获取元素方法,操作元素方法,获取CMD信息等方法
3、业务层:页面元素信息。
4、逻辑层:一些功能,比如登录,注册。
5、数据层:测试信息存放地方
emmm,这里是安静这边自身的了解,当然可能每个人对PO分层的理解不同,可能大佬们分的比我这里更加详细。(一起分享,共同学习)
这里安静简单拿项目来进行实际介绍下PO内容
首先我们先看以前如何编写测试用例的
# coding:utf-8
from appium import webdriver
import time
import unittest
class login(unittest.TestCase):
def setUp(self):
desired_caps = {
'platformName': 'Android', # 测试版本
'deviceName': 'emulator-5554', # 设备名
'platformVersion': '5.1.1', # 系统版本
'appPackage': 'com.taobao.taobao', #apk的包名
'appActivity': 'com.ali.user.mobile.login.ui.UserLoginActivity', # apk的launcherActivity
'noReset':True , # 清除缓存
}
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
def tearDown(self):
self.driver.quit()
def test01(self):
'''
账号密码错误
'''
self.driver.implicitly_wait(40)
self.driver.find_element_by_id("com.eboss2.sbs:id/tv_username").send_keys("22222")
time.sleep(2)
self.driver.find_element_by_id("com.eboss2.sbs:id/tv_password").send_keys("33333333")
time.sleep(2)
self.driver.find_element_by_id("com.eboss2.sbs:id/btn_login").click()
time.sleep(5)
x = self.driver.find_element_by_id("com.eboss2.sbs:id/shopName_TextView").text
print(x)
self.assertEqual(x,'请输入正确的手机号')
if __name__ == '__main__':
unittest.main()
相信绝大部分的同学,第一次写代码的时候都会这样写测试用例
PO模型设计框架
肯定有人会问?什么是自动化框架?自动化框架有什么好处呢?这个地方我们先不说答案,我们后面写
首先把安静这边设计的框架先整体列出来,一个个为大家分析
appium_python # 目标工程
- case # 用例存放
test_login.py # 编写用例
- common # 公用方法
appium_start.py # 启动appium
Base.py # 封装基础内容
dos_cmd.py # cmd执行
HTmlTestRunner.py # 报告文件
logger.py # 日志
read_yaml.py # 读取yaml文件
- config # 页面元素存放
appium.py # login页面存放
- function # 功能点
login.py # 登录逻