2025年浅谈PO模式

浅谈PO模式浅谈 PO 模式 概述 设计原则 优点 小例子 概述 PO 模式是自动化测试的一种常见设计思路 核心思想是通过对界面素的封装减少冗余代码 同时在后期维护中 若素定位发生变化 只需要调整页面素封装的代码 提高测试用例的可维护性 可读性 换句话说 将每个页面封装成页面类 将页面间通过页面素进行的操作抽象出来 通过管理这些抽象出来的方法管理用例集 设计原则 The public methods

浅谈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()
编程小号
上一篇 2025-02-11 17:27
下一篇 2025-01-27 10:01

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/hz/146301.html