自動化測試po模式是什么?自動化測試po分層如何實現?-附詳細源碼


一、什么是PO模式

全稱:page object model  簡稱:POM/PO

PO模式最核心的思想是分層,實現松耦合!實現腳本重復使用,實現腳本易維護性!

主要分三層:

1.基礎層BasePage:封裝一些最基礎的selenium的原生的api方法,元素定位,框架跳轉等。

2.PO層:元素定位、獲得元素對象,頁面動作

3.測試用例層:業務邏輯,數據驅動!

三者的關系:PO層繼承繼承層,測試用例層調用PO層!

二、什么是自動化測試框架

說到自動化框架,我相信很多人應該都聽過這個詞,但是不知其到底是個什么東西,為什么要用自動化框架。有很多人堆自動化框架都是懵懵懂懂,就跟談戀愛一樣,朦朧美!

一個好的自動化測試框架是可以讓不那么懂技術的人也可以寫自動化測試腳本的,

一個好的自動化測試框架可以減少自動化測試中腳本管理和維護當中的人力物力和財力。

其實自動化框架的一個最大的意義在於可重用性。因為在框架里,你可以實現很多的通用功能來簡化整個腳本的開發過程。並且生成美觀的測試報告。

三、非PO模式和PO模式優缺點對比

筆者來自公眾號:軟測之家     更多技術干貨,視頻資料請加:軟件測試技術群:695458161
非PO模式 PO模式
面向過程的線性腳本 POM把頁面元素定位和業務操作流程分開。實現松耦合。
復用性差 UI元素的改變不需要修改業務邏輯代碼。只需要找到對應的PO頁修改定位即可,數據代碼分離
維護性差 PO能使我們的測試代碼提高代碼的可讀性,高復用性,可維護性。

四、如何從0到1搭建PO模型

非PO模式舉個栗子:有如下百度搜索腳本:

import unittest from selenium import webdriver from selenium.webdriver.common.by import By class Test(unittest.TestCase): def test01(self): # 打開瀏覽器 driver = webdriver.Chrome() # 加載百度首頁 driver.get('http://www.baidu.com') # 在百度搜索欄中輸入軟件測試 driver.find_element(By.ID, 'kw').send_keys('軟件測試') # 點擊百度一下按鈕 driver.find_element(By.ID, 'su').click() def test02(self): # 打開瀏覽器 driver = webdriver.Chrome() # 加載百度首頁 driver.get('http://www.baidu.com') # 在百度搜索欄中輸入軟件測試 driver.find_element(By.ID, 'kw').send_keys('硬件測試') # 點擊百度一下按鈕 driver.find_element(By.ID, 'su').click() 

如何把上述栗子改成PO模式呢?

1、基礎層BasePage

from selenium import webdriver class BasePage: #構造方法 def __init__(self): # 打開瀏覽器 self.driver = webdriver.Chrome() # Alt+Enter # 加載百度首頁 self.driver.get('http://www.baidu.com') #封裝定位元素 def find_ele(self,*args): ele = self.driver.find_element(*args) return ele

2、PO層:封裝百度頁面元素定位,元素對象以及頁面操作

from selenium.webdriver.common.by import By from base.base_page import BasePage class BaiduPage(BasePage): #元素定位, baidu_text_loc = (By.ID, 'kw') baidu_submit_loc = (By.ID, 'su') #獲得元素對象, def get_text_obj(self): ele = self.find_ele(*BaiduPage.baidu_text_loc) return ele def get_submit_obj(self): ele = self.find_ele(*BaiduPage.baidu_submit_loc) return ele #頁面操作 def search(self,search_string): self.get_text_obj().send_keys(search_string) self.get_submit_obj().click()

3、測試用例層:業務邏輯和數據驅動

from ddt import ddt, data from po.baidu_page import BaiduPage @ddt class BaiduTest(unittest.TestCase):  @data('軟件測試','硬件測試') def test01(self,seaString): BaiduPage().search(seaString) time.sleep(5) if __name__ == '__main__': unittest.main()

從上面的PO案例:讓我們更加了解清晰PO的優點在於:

1.POM把頁面元素定位和業務操作流程分開。實現松耦合。
2.UI元素的改變不需要修改業務邏輯代碼。只需要找到對應的PO頁修改定位即可,數據代碼分離
3.PO能使我們的測試代碼提高代碼的可讀性,高復用性,可維護性。

五、自動化測試框架和PO的關系

自動化框架=po+各種封裝(日志處理封裝,全局配置文件的封裝,數據庫連接的封裝,excel操作封裝,數據驅動封裝等)

其實想要勝任UI自動化測試崗位還需要掌握以下內容:

1.python或java

2.selenium的API

3.unittest/pytest單元測試框架

4.htmltestrunner/allure測試報告

5.數據驅動dtt(excel,yaml,mysql)或pytest中的fixtrue

6.關鍵字驅動:公共類,方法封裝,隨機數,數據庫連接,全局登錄

7.全局配置文件處理

8.日志處理

9.斷言

10.第三方庫

11.git和github或碼雲集成開發!

12.jenkins持續集成

這些內容在我的CSDN博客當中基本都有涉獵,大家需要什么就去搜索什么吧!

六、總結

全文筆者耗時兩小時,純手打,純干貨,如果您覺得對您有幫助,請點贊,收藏,分享三連!您的支持是筆者最大的動力!

如果你對此文有任何疑問,如果你對軟件測試、接口測試、自動化測試、面試經驗交流感興趣歡迎加入:

軟件測試技術群:695458161,群里的免費資料都是筆者十多年測試生涯的精華。還有同行大神一起交流技術哦。

作者:來自公眾號:軟測之家
出處:https://www.cnblogs.com/csmashang/p/12878496.html
原創不易,歡迎轉載,但未經作者同意請保留此段聲明,並在文章頁面明顯位置給出原文鏈接。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM