頁面交易是組織測試自動化的新方法
攝影:Mateus Campos Felipe
充滿活力的猩紅色朱鹮 (Eudocimus ruber),也稱為紅朱鹮,是 Threskiornithidae 鳥類家族中的引人注目的成員。 這種熱帶鳥類為南美洲和加勒比海部分地區的風景增色不少。 雖然它的外形與其他朱鹮物種相似,但其鮮豔的猩紅色羽毛使其與眾不同。 它是民族自豪感的象徵,是特立尼達和多巴哥的兩種國鳥之一,它的圖皮瓜拉尼語名稱“guará”甚至被納入巴西多個沿海城市的名稱中。
Guará:頁面事務模式的 Python 實作
Guará,一個 Python 函式庫,體現了頁面事務設計模式。 它與其說是一種工具,不如說是一種靈活的程式設計範例,適用於 Selenium 以外的各種自動化驅動程序,包括 Linux、Windows 和行動自動化。
此模式的核心目標是簡化測試自動化。 Guará 從頁面物件、應用程式操作和劇本中汲取靈感,以應用程式內的使用者操作(事務)為中心,例如登入、登出或提交表單。
這種方法增強了自動化測試程式碼的可讀性、可維護性和適應性,而不需要新的工具或複雜的抽象化。 一個關鍵的優勢是其與驅動程式無關的性質;測試人員不會被限制使用 Selenium。 Guará 與 Helium、Dogtail、PRA Python、Playwright 或任何首選驅動程式無縫整合。不需要額外的插件或專業知識。
重申:Guará 是頁面事務設計模式的 Python 實現,該模式優先於獨立工具。
Guará 利用指令模式 (GoF) 將使用者互動(按鈕按下、文字輸入)捆綁到交易中。 雖然被稱為框架,但它並不是一個新工具。
Guará 沒有專注於單一 UI 元素,而是強調使用者的旅程。 複雜性被封裝在事務中,導致測試語句讀起來像自然語言。 測試人員還可以建立和整合自訂斷言。
瓜拉語實際應用:語言切換範例
此範例展示了使用者在網頁上切換語言:
from selenium import webdriver from guara.transaction import Application from guara import it, setup import home def test_language_switch(): app = Application(webdriver.Chrome()) # Open the application app.at(setup.OpenApp, url="https://example.com/") # Change language and assert app.at(home.ChangeToPortuguese).asserts(it.IsEqualTo, "Conteúdo em Português") app.at(home.ChangeToEnglish).asserts(it.IsEqualTo, "Content in English") # Close the application app.at(setup.CloseApp)
每筆交易都駐留在自己的類別中(例如,ChangeToPortuguese
),擴展AbstractTransaction
。 測試人員只需重寫 do
方法即可;瓜拉負責剩下的事情。
from guara.transaction import AbstractTransaction class ChangeToPortuguese(AbstractTransaction): def do(self, **kwargs): self._driver.find_element(By.CSS_SELECTOR, ".btn-pt").click() return self._driver.find_element(By.CSS_SELECTOR, ".content").text
測試後日誌顯示事務和斷言:
<code>test_demo.py::test_language_switch 2025-01-24 21:07:10 INFO Transaction: setup.OpenApp 2025-01-24 21:07:10 INFO url: https://example.com/ 2025-01-24 21:07:14 INFO Transaction: home.ChangeToPortuguese 2025-01-24 21:07:14 INFO Assertion: IsEqualTo 2025-01-24 21:07:14 INFO Actual Data: Conteúdo em Português 2025-01-24 21:07:14 INFO Expected: Conteúdo em Português 2025-01-24 21:07:14 INFO Transaction: home.ChangeToEnglish 2025-01-24 21:07:14 INFO Assertion: IsEqualTo 2025-01-24 21:07:14 INFO Actual Data: Content in English 2025-01-24 21:07:14 INFO Expected: Content in English 2025-01-24 21:07:14 INFO Transaction: setup.CloseApp</code>
夾具(設定/拆卸)管理測試初始化和完成。 pytest 或單元測試等標準測試工具完全相容。
使用瓜拉豆的好處
- 改進的程式碼可重用性:每個類別代表一個完整的使用者事務。
- 增強可讀性:程式碼類似於簡單的英語,促進協作。
- 可自訂斷言:建立和共享自訂斷言。
- 驅動程式不可知論:可與 Selenium 以外的各種自動化工具搭配使用。
- 多功能應用程式:自動化 REST API、單元測試、桌面和行動測試。
開始使用瓜拉
- 安裝:
pip install guara
- 使用
AbstractTransaction
建立交易。 - 使用
Application
、at
和asserts
呼叫事務。 - 使用 Pytest 執行有詳細日誌記錄的測試:
python -m pytest -o log_cli=1 --log-cli-level=INFO
結論
Guará 提供了一種新的測試程式碼組織方法,優先考慮可讀性、可維護性和驅動程式獨立性。它促進協作並允許創建和共享自訂斷言。 試試瓜拉!
以上是頁面交易是組織測試自動化的新方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undress AI Tool
免費脫衣圖片

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

多態是Python面向對象編程中的核心概念,指“一種接口,多種實現”,允許統一處理不同類型的對象。 1.多態通過方法重寫實現,子類可重新定義父類方法,如Animal類的speak()方法在Dog和Cat子類中有不同實現。 2.多態的實際用途包括簡化代碼結構、增強可擴展性,例如圖形繪製程序中統一調用draw()方法,或遊戲開發中處理不同角色的共同行為。 3.Python實現多態需滿足:父類定義方法,子類重寫該方法,但不要求繼承同一父類,只要對象實現相同方法即可,這稱為“鴨子類型”。 4.注意事項包括保持方

參數(parameters)是定義函數時的佔位符,而傳參(arguments)是調用時傳入的具體值。 1.位置參數需按順序傳遞,順序錯誤會導致結果錯誤;2.關鍵字參數通過參數名指定,可改變順序且提高可讀性;3.默認參數值在定義時賦值,避免重複代碼,但應避免使用可變對像作為默認值;4.args和*kwargs可處理不定數量的參數,適用於通用接口或裝飾器,但應謹慎使用以保持可讀性。

迭代器是實現__iter__()和__next__()方法的對象,生成器是簡化版的迭代器,通過yield關鍵字自動實現這些方法。 1.迭代器每次調用next()返回一個元素,無更多元素時拋出StopIteration異常。 2.生成器通過函數定義,使用yield按需生成數據,節省內存且支持無限序列。 3.處理已有集合時用迭代器,動態生成大數據或需惰性求值時用生成器,如讀取大文件時逐行加載。注意:列表等可迭代對像不是迭代器,迭代器到盡頭後需重新創建,生成器只能遍歷一次。

類方法是Python中通過@classmethod裝飾器定義的方法,其第一個參數為類本身(cls),用於訪問或修改類狀態。它可通過類或實例調用,影響的是整個類而非特定實例;例如在Person類中,show_count()方法統計創建的對像數量;定義類方法時需使用@classmethod裝飾器並將首參命名為cls,如change_var(new_value)方法可修改類變量;類方法與實例方法(self參數)、靜態方法(無自動參數)不同,適用於工廠方法、替代構造函數及管理類變量等場景;常見用途包括從

處理API認證的關鍵在於理解並正確使用認證方式。 1.APIKey是最簡單的認證方式,通常放在請求頭或URL參數中;2.BasicAuth使用用戶名和密碼進行Base64編碼傳輸,適合內部系統;3.OAuth2需先通過client_id和client_secret獲取Token,再在請求頭中帶上BearerToken;4.為應對Token過期,可封裝Token管理類自動刷新Token;總之,根據文檔選擇合適方式,並安全存儲密鑰信息是關鍵。

Python的magicmethods(或稱dunder方法)是用於定義對象行為的特殊方法,它們以雙下劃線開頭和結尾。 1.它們使對象能夠響應內置操作,如加法、比較、字符串表示等;2.常見用例包括對像初始化與表示(__init__、__repr__、__str__)、算術運算(__add__、__sub__、__mul__)及比較運算(__eq__、__lt__);3.使用時應確保其行為符合預期,例如__repr__應返回可重構對象的表達式,算術方法應返回新實例;4.應避免過度使用或以令人困惑的方

Python的垃圾回收機制通過引用計數和周期性垃圾收集來自動管理內存。其核心方法是引用計數,當對象的引用數為零時立即釋放內存;但無法處理循環引用,因此引入了垃圾收集模塊(gc)來檢測並清理循環。垃圾回收通常在程序運行中引用計數減少、分配與釋放差值超過閾值或手動調用gc.collect()時觸發。用戶可通過gc.disable()關閉自動回收、gc.collect()手動執行、gc.set_threshold()調整閾值以實現控制。並非所有對像都參與循環回收,如不包含引用的對象由引用計數處理,內置

Pythonmanagesmemoryautomaticallyusingreferencecountingandagarbagecollector.Referencecountingtrackshowmanyvariablesrefertoanobject,andwhenthecountreacheszero,thememoryisfreed.However,itcannothandlecircularreferences,wheretwoobjectsrefertoeachotherbuta
