利用PO思想從0搭建app測試框架 demo

2022-09-08 12:39:08 字數 2197 閱讀 7993

po思想六大原則(官網:

(引用自:

1. 公共的方法代表頁面的服務

2. 不要暴露頁面細節

3. 不要把斷言和操作細節混用

4. 方法可以return到新開啟的頁面

5. 不要封裝頁面所有元素(用到哪些封裝哪些)

6. 相同的行為會產生不同的結果,可以封裝不同的方法

具體分析

原則一:要封裝頁面中的功能或服務,比如點選頁面元素,可以進入到新的頁面,則可為這個服務封裝方法"進入新頁面"

原則二:封裝細節,對外只提供方法名(或者介面)

原則三:封裝的操作細節中不要使用斷言,把斷言放到單獨的模組中,比如:testcase

原則四:點選乙個按鈕會開啟新的頁面,可以用return方法鏈式跳轉,比如return mainpage()表示跳轉到主頁

原則五:只為頁面中重要的元素進行po設計,捨棄不重要的內容;用到哪些再封裝哪些

原則六:乙個動作可能產生不同結果,比如點選按鈕後,可能成功,也可能失敗,為兩種結果封裝兩個方法:click_success和click_error

1、梳理需要實現自動化的測試用例。

根據策略將需要實現的用例梳理出來,找其中乙個先實現。

有時間可以建模,可以清晰頁面的跳轉關係(熟練了就沒有必要輸出了),類似如下這種

2、構造po模型

建立包結構:base、page、testcase

根據用例涉及到的頁面,建立頁面相關的類和方法,具體的實現內容可以先跳過。

檢視**

def start(self):

return self # 由於啟動後要跳轉到首頁,所以這裡返回self,便於呼叫into_main_page方法

def stop(self):

pass

def restart(self):

pass

def into_main_page(self):

"""進入首頁"""

return mainpage()

例如:page中的main_page.py

檢視**

class mainpage:

def goto_address_list(self):

"""跳轉到通訊錄頁面"""

return addresslistpage()

就這樣用到那個就建立哪個頁面類,鏈式的就把所有的都建立了,建立後的目錄:

3、編寫測試用例

根據業務邏輯編寫、

鏈式呼叫、做結果校驗,簡單的調通,先把架子打起來,不用寫細節

例如:testcase中的test_add_member.py

檢視**

class testaddmember:

def setup(self):

def teardown(self):

def test_add_member_manual(self):

"""測試手動添輸入加用例"""

result = self.main.goto_address_list() \

.goto_add_member_list() \

.goto_add_member_manual() \

.s**e() \

.get_add_member_result()

# todo 當前返回的是true,待完善後重新寫斷言

assert result

4、填充各方法中的具體實現

driver例項的傳遞

補充細節操作

5、優化用例

6、併發執行

執行時指定引數:

7、繼續下一條用例輸出

z

PHP之OOP 程式設計思想從過程到物件!

有乙個人走進商店,他對老闆說 我想要乙個東西,這個東西呢,它是圓形的,是甜甜的,上面有奶油,並且有一些水果在上面,可以插蠟燭.他繁複得敘述的這個什麼東西,究竟是什麼呢?其實我不說大家也猜得到 他想要乙個生日蛋糕。現實生活中,我們不必描述所有一切事物的製作過程,因為有時,我只想要這個事物,並不關心它的...

利用 遞迴 思想來簡化問題

首先,經典的漢諾塔問題用遞迴來實現將會很簡單,如下 void move char pos1,char pos2 void hannoi int n,char pos1,char pos2,char pos3 else 由兩個函式來實現完成,遞迴結束的終點是只有乙個盤子是將盤子從pos1移動動到pos...

利用異或求解 N N 0 N 0 N

1題 1 1000放在含有1001個元素的陣列中,只有唯一的乙個元素值重複,其它均只出現 一次。每個陣列元素只能訪問一次,設計乙個演算法,將它找 出來 不用輔助儲存空 間,能否設計乙個演算法實現?顯然已經有人提出了乙個比較精彩的解法,將所有數加起來,減去1 2 1000的和。這個演算法已經足夠完美了...