柚子快報(bào)邀請碼778899分享:Pytest應(yīng)用PO設(shè)計(jì)模式
柚子快報(bào)邀請碼778899分享:Pytest應(yīng)用PO設(shè)計(jì)模式
Pytest應(yīng)用PO設(shè)計(jì)模式
本篇內(nèi)容主要涉及在軟件測試中實(shí)現(xiàn)PO設(shè)計(jì)模式的應(yīng)用
包含PO思想、PO原則、PO使用方法,最后會寫一個實(shí)際模板供大家參考。
一、PO思想
? PO(PageObject),在UI頁面測試時,通常會存在大量的頁面元素和各種點(diǎn)擊操作,而我們在工作中也會碰到頁面元素變化的情況,這樣在常規(guī)測試項(xiàng)目中,會出現(xiàn)頻繁的修改用例情況,導(dǎo)致效率不高。
? PO設(shè)計(jì)模式可以很好的解決這個問題。PO的設(shè)計(jì)思想,是將元素信息和操作細(xì)節(jié)封裝到Page類中,然后在測試用例上調(diào)用相關(guān)的對象來執(zhí)行相關(guān)的操作。
? 來看看大佬的博客 馬丁·福勒,PO就是他提出并推廣的~
? 打個比方,現(xiàn)在有一個商品列表頁,在列表頁點(diǎn)擊商品圖片,進(jìn)入到商品詳情頁
? PO設(shè)計(jì)中,商品列表頁是一個類,這個類里面有當(dāng)前這個頁面中的元素信息,操作方法等。在用例中,我們就會調(diào)用商品列表頁執(zhí)行點(diǎn)擊商品的操作,注意,我們知道Python中方法的返回值,這里將返回商品詳情頁這個對象。
? 還有Selenium官方的實(shí)踐推薦,Page object models
二、PO原則
在Selenium官方推薦頁面可以看到最后的總結(jié)部分
概況下來就是以下含義
字段意義
不要暴露頁面內(nèi)部的元素給外部不需要建模 UI 內(nèi)的所有元素 方法意義
用公共方法代表 UI 所提供的功能方法應(yīng)該返回其他的 PageObject 或者返回用于斷言的數(shù)據(jù)同樣的行為不同的結(jié)果可以建模為不同的方法不要在方法內(nèi)加斷言
三、PO使用方法
? 這里我們借用dcd網(wǎng)站,實(shí)現(xiàn)一個簡單的PO設(shè)計(jì)模式的UI流程
需求:在目標(biāo)網(wǎng)址首頁點(diǎn)擊咨詢,獲取跳轉(zhuǎn)頁面的title,做斷言。
這里做了一個PO_Demo,包含一個測試用例,一個base_page,兩個頁面對象,也有pytest中的conftest傳參的一個用法。
測試用例
當(dāng)pytest執(zhí)行時,會搜集到test_goto_information用例進(jìn)行執(zhí)行。這里還使用了conftest傳參的用法。執(zhí)行的結(jié)果就是拿到咨詢頁的title,再進(jìn)行斷言
Page對象
basepage對象,封裝了我們頁面上的通用操作,比如查找單個元素,查找多個元素,輸入字符等在其他頁面繼承了basepage后,也可以使用這些方法
Homepage對象
在首頁頁面對象中,將點(diǎn)擊咨詢的操作抽象成一個方法可以使用父類basepage的查找單個元素方法進(jìn)行查找元素注意點(diǎn),在最后是返回了下一個頁面的對象
InformationPage對象
這里我們就只拿個title,返回回去
回過頭來我們看用例的執(zhí)行,最后就是調(diào)用了get_title拿到的title,進(jìn)行斷言。
這樣就使用PO完成了一條調(diào)用鏈。
四、結(jié)尾
本篇以一個真實(shí)的代碼程序來體現(xiàn)了PO的設(shè)計(jì)模式,代碼打包在下面進(jìn)行下載~
Selenium+PO設(shè)計(jì)模式demo模板資源
板資源](https://download.csdn.net/download/qq_42831466/88753348)
柚子快報(bào)邀請碼778899分享:Pytest應(yīng)用PO設(shè)計(jì)模式
好文鏈接
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。