1. 程式人生 > 實用技巧 >UI和介面自動化中的設計模式:單例模式【軟體測試培訓】【多測師_王sir】

UI和介面自動化中的設計模式:單例模式【軟體測試培訓】【多測師_王sir】

在大型專案中,專案中會有不同的功能,根據不同的功能將程式碼放到不同的檔案中,對頁面的操作需要使用到
瀏覽器driver,對於不停的檔案中driver來說,driver需要統一,否則會開啟多個瀏覽器例項,比如下面
2個python檔案,分別為開啟百度和開啟bing: baidu.py
from selenium import webdriver driver = webdriver.Chrome() driver.get('http://www.duoceshi.cn') bing.py from selenium import webdriver driver = webdriver.Chrome() driver.get(
'http://www.duoceshi.cn') 新建一個main.py 引入 baidu.py 和 bing.py 檔案 main.py import baidu import bing 會發現同時開啟兩個瀏覽器,本來是需要同一個瀏覽器例項。但是由於在每個檔案中都建立
一個新的瀏覽器例項,所以在呼叫的時候會開啟2個瀏覽器例項。

單例模式:
單例模式(Singleton),也叫單子模式,是一種常用的軟體設計模式。在應用這個模式時,單例物件的
類必須保證只有一個例項存在。許多時候整個系統只需要擁有一個的全域性物件,這樣有利於我們協調系統
整體的行為。比如在上面的場景中,多個web操作的頁面都需要同一個driver例項。 實現單例模式的思路是: 一個類能返回物件一個引用(永遠是同一個)和一個獲得該例項的方法(必須是靜態方法,通常使用
getInstance這個名 稱);當我們呼叫這個方法時,如果類持有的引用不為空就返回這個引用,如
果類保持的引用為空就建立該類的例項並將例項的引用賦予該類保持的引用;同時我們 還將該類的構
造函式定義為私有方法,這樣其他處的程式碼就無法通過呼叫該類的建構函式來例項化該類的物件,只
有通過該類提供的靜態方法來得到該類的唯一例項。 singledriver.py
from selenium import webdriver from selenium.webdriver.chrome.webdriver import WebDriver class DriverInstance: __instance
= None @classmethod def create_driver(cls) -> WebDriver: if not cls.__instance: cls.__instance = webdriver.Chrome() return cls.__instance 需要用到driver的時候只需要從singledriver檔案中例項化即可。 baidu.py from singledriver import SingleDriver driver = SingleDriver.getInstance() driver.get('http://www.duoceshi.cn') bing.py from singledriver import SingleDriver driver = SingleDriver.getInstance() driver.get('http://www.duoceshi.cn') main.py import baidu import bing 再次執行 main.py 檔案,會發現在同一個瀏覽器中執行。