浅谈PO模式
模式 浅谈 PO
2023-06-13 09:11:32 时间
大家好,又见面了,我是你们的朋友全栈君。
浅谈PO模式
概述
PO模式是自动化测试的一种常见设计思路,核心思想是通过对界面元素的封装减少冗余代码,同时在后期维护中,若元素定位发生变化, 只需要调整页面元素封装的代码,提高测试用例的可维护性、可读性。换句话说,将每个页面封装成页面类,将页面间通过页面元素进行的操作抽象出来,通过管理这些抽象出来的方法管理用例集。
设计原则
- The public methods represent the services that the page offers
- Try not to expose the internals of the page
- Generally don’t make assertions
- Methods return other PageObjects
- Need not represent an entire page
- Different results for the same action are modelled as different methods (摘自:https://github.com/SeleniumHQ/selenium/wiki/PageObjects)
优点
- 业务代码和测试代码分离,降低耦合易于管理
- 减少冗余代码
小例子
我们以PO的思路去设计一个测试百度搜索的自动化测试代码
- basePage,封装页面操作和页面元素
//test
from selenium import webdriver
class BasePage(object):
def __init__(self):
self.driver = webdriver.Chrome()
self.driver.get(u"http://www.baidu.com")
def find_element(self, *args):
return self.driver.find_element(*args)
- 封装百度页面的页面元素和操作
from selenium.webdriver.common.by import By
from pages.basePage import BasePage
class BaiduPage(BasePage):
#元素id
baidu_text_loc = (By.ID, 'kw')
baidu_submit_loc = (By.ID, 'su')
#定位搜索框元素
def get_text_obj(self):
text_ele = self.find_element(BaiduPage.baidu_text_loc)
return text_ele
#定位提交索索内容的按钮元素
def get_sub_obj(self):
sub_ele = self.find_element(BaiduPage.baidu_submit_loc)
return sub_ele
#执行搜索操作
def search(self, key_words):
self.get_sub_obj().send_keys(key_words)
self.get_sub_obj().click()
- 用例集
from ddt import ddt, data
from pages.baiduPage import BaiduPage
@ddt
class BaiduTest(unittest.TestCase):
@data('软件测试', '硬件测试')
def test01(self, seaString):
BaiduPage().search(seaString)
time.sleep(5)
if __name__ == '__main__':
unittest.main()
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145846.html原文链接:https://javaforall.cn
相关文章
- Android基于DataBinding+Koin实现MVVM模式页面快速开发框架
- 首创远程开发模式,腾讯云 CODING 助力国产芯片开发提质增效
- 创建型模式之门—简单工厂
- Java设计模式之迭代器模式
- 高频js手写题之实现数组扁平化、深拷贝、总线模式_2023-02-23
- 关于usdt质押模式系统开发讲解/质押DAPP系统开发合约方案
- 如何快速关闭MySQL安全模式(关闭mysql安全模式)
- RabbitMQ 3.8.8 发布:引入维护模式
- Xfce 桌面新增‘免打扰’模式以及单一应用通知设置的新特性
- 归档模式如何手动开启Oracle数据库的归档模式(oracle手动开启)
- Oracle模式一切皆可管理(oracle什么是模式下)
- Redis集群优雅地进行模式选举(redis集群模式选举)
- Redis混合模式持久化有效节省空间的兼顾数据可靠性(redis 混合模式持久化)
- 浅谈C#设计模式之工厂模式