iT邦幫忙

2024 iThome 鐵人賽

0
Python

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

D27 allure 截圖實作(2)

  • 分享至 

  • xImage
  •  

這次會接續上次的實作把截圖做完,並介紹 conftest 的強大之處。

conftest

簡單來講,conftest 就是專門放 fixture 的檔案。前面有提過 fixture,它可以說是 setup/teardown 的上位替代版本。可實現 setup/teardown 之外也能設定作用範圍。我們要做的就是在 conftest 上寫建置瀏覽器的步驟。


import pytest
import allure
from allure_commons.types import AttachmentType

from browser import Browser


class InitBrowser:
    @pytest.fixture(scope='function', autouse=True)
    @allure.title("瀏覽器設定")
    def setup_browser(self):
        self.browser = Browser().get_browser()
        yield
        
        allure.attach(self.browser.get_screenshot_as_png(), name="Screenshot", attachment_type=AttachmentType.PNG)
        self.browser.quit()

fixture 設定成自動執行(autouse),也就是不用把函式特地傳到 test 檔裡面,再把剛剛寫的 browser 設定瀏覽器的部分 import 進 conftest,再用 allure.attach 把瀏覽器截圖連結到 allure 即可。

寫在 conftest 裡面,除了可以讓 fixture 自動執行,讓之後每一條自動化的 case 都可以在開始的時候自動執行瀏覽器初始化的步驟,節省 code 數且更好維護外,在 fixture 中可以使用 yield,把瀏覽器初始化分成 setup 與 teardown,這樣就可以達到我們「在 case 結束瞬間截圖的目的」。

而 conftest 不只能做瀏覽器初始化,只要是 case 共通會跑到的部分,我們都可以用 conftest 處理,這也是 conftest 強大的地方。

實際測試

@allure.step("前往我的文章")
    def go_to_my_article(self):
        with allure.step("點擊帳號圖示"):
            self.click_element(self.account_icon)
        time.sleep(2)
        #with allure.step("點擊我的文章"):
            #self.click_element(self.my_article)
            

我們把點擊我的文章的動作拔掉,並實際執行 test

https://ithelp.ithome.com.tw/upload/images/20241117/20169358Jb8VWJosFD.jpg
可以看到畫面停留在點擊頭像那步,截圖成功。

下一篇預計會補充之前 D6 講到的 XPATH 的進階查詢方法。


上一篇
D26 allure 截圖實作(1)
下一篇
D28 XPATH Axes
系列文
利用Python完成自動化測試專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言