4. 高階使用
4.1 攔截網路請求
網路攔截:
l 無響應 pass
l 中止 route.abort("aborted")
l 放行 route.continue_()
l 處理, 返回自定義的響應 route.fulfill()
Playwright使用 router 方法,並且傳遞以下引數:
l url 要攔截地址表示式:
n glob表示式
n 正規表示式
n 返回布林值的函式
l handler ,攔截後進行執行的函式
n 接受 router 引數
中止響應,程式碼示例:

自定義響應,程式碼示例:

本來訪問百度,自定義返回中訪問到了金山文件首頁。
4.2 pytest 管理用例
市面上的流行框架:unittest(標準庫)、pytest(第三方庫)
安裝外掛:

程式碼示例:

執行命令:# 獲得網頁報告
pytest --html=report.html
報告見下:

4.3 PO模型
playwright本身是支援PO模型的。
如打卡設定頁,編寫定位方法的py檔案

測試用例時直接操作定位元素,組成業務邏輯即可

4.4 API 和 UI 自動化測試融合
好處: 縮短自動化測試程式碼的整體執行時長。舉個例子,我們要測試表單結果這個功能,只有檢視錶單結果這個操作本身才是我們的測試範圍, 在檢視錶單結果之前的所有操作,例如使用者註冊—使用者登入—使用者建立表單—釋出表單-填寫表單 ,這一系列操作都屬於“非測試部分”。
關鍵點: 當從 API 請求切換到 UI 操作時,登入態應該從介面請求中帶過來。(既保持同一會話cookie或 token)
4.4 資料驅動
資料驅動,指在自動化測試中處理測試資料的方式。方法是採用操作yaml檔案進行測試資料與功能函式分離,程式碼示例見下:


備註:
1. 還有excel、json等格式檔案的方式,這裡不概述。
2. 需要提前安裝庫 pip install PyYaml
4.5 動態挑選用例執行
pytest框架支援多種方式的測試用例的挑選,這裡我只介紹一種方式:
1. pytest.ini 檔案中設定規則:markers = debug01

2. 需除錯的測試用例打上標籤: @pytest.mark.debug01

3. 執行命令 (--headful 帶頭執行,預設是無頭模式)
pytest -m debug01 --headful
4.5 Allure測試報告
安裝pip install allure-pytest
報告截圖:

4.5 持續整合
持續整合這裡採用的是jenkins,不過第一次執行會報錯:jenkins目錄沒有瀏覽器驅動:
這個時候需要將C:\Users\win\AppData\Local\ms-playwright下的瀏覽器驅動複製到
jenkins的要求目錄下,如:
C:\Windows\System32\config\systemprofile\AppData\Local\ms-playwright
備註:jenkins的job命令:
G:cd G:\InterAutoTest_Wworkon playwrightPRO && python run.py
2. 案例實戰

測試用例要求:打卡功能,固定卡預覽後,卡片型別是固定卡
測試指令碼:

