iT邦幫忙

2024 iThome 鐵人賽

0
Python

利用Python完成自動化測試專案系列 第 26

D26 allure 截圖實作(1)

  • 分享至 

  • xImage
  •  

這次要在 allure 內新增截圖。當 case 結束時,會在程式關閉瞬間截圖並在 allure 裡面的 case 顯示。
https://ithelp.ithome.com.tw/upload/images/20241117/20169358g6TUiX5Ncy.jpg
這樣會比起看 step 哪邊出錯更好找 bug,也比較好判斷問題在哪(例如網頁 loading 太久或是沒有成功抓到元素等等)。

要實現截圖並放在 allure 的功能不難,只要用 allure.attach 即可。

from allure_commons.types import AttachmentType

allure.attach(self.browser.get_screenshot_as_png(), name="Screenshot", attachment_type=AttachmentType.PNG)

截圖功能最複雜的地方是要在 case 結束的時候截圖,目前我們是在 test 的開頭初始化瀏覽器,這樣不好實作截圖功能,因此這次我們要把瀏覽器初始化的部分獨立出來。

而我們要做的第一步是把原本在 test 上面初始化瀏覽器的區塊移到獨立的 py 檔。

browser. py

在一開始寫自動化的時候,由於 case 跟執行的操作只有一個,所以把瀏覽器初始化的部分直接寫在 test 上,但是在實際寫網頁自動化測試專案的時候 case 絕對不會只有一條,所以遲早都要把瀏覽器的部分抽出來。

browser. py

class Browser:
    def __init__(self) -> None:
        pass
    
    def get_browser(self):
        # 設定 ChromeDriver 的路徑
        browesr_path = "c:\Program Files\chromedriver-win64\chromedriver-win64\chromedriver.exe"

        service = Service(browesr_path)

        # 設定 Chrome 的啟動參數
        options = Options()

        # 設定瀏覽器語言為中文
        options.add_argument("--lang=zh-TW")

        # 全螢幕模式
        options.add_argument("--kiosk")

        browser = webdriver.Chrome(service=service, options=options)

        return browser

除了把原本的 def 改成 Class 以外,基本上就是直接搬過來。會改成 Class 的原因是因為要在 conftest 上執行。

下一篇會介紹 conftest 以及做完截圖的部分。在講 fixture 的時候沒介紹到 conftest,在下一篇也會一併展示 conftest 強大的地方。


上一篇
D25 allure 報表(3)
下一篇
D27 allure 截圖實作(2)
系列文
利用Python完成自動化測試專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言