iT邦幫忙

2024 iThome 鐵人賽

DAY 6
0
Python

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

D17 pytest fixture

  • 分享至 

  • xImage
  •  

今天要介紹 pytest 最重要的功能 fixture。在介紹 fixture 之前要先講到 setup 與 teardown。

setup / teardown

簡單來講它們是負責在測試開始前與開始後的初始化, setup 負責開始前, teardown 負責結束後。舉例來講,回到前面的 ithelp, setup 可以負責登入這類每次進網頁要做的設定,而 teardown 則是負責把每次自動化發出去的草稿刪除。透過 setup/teardown 能夠省下多餘的 code。

fixture

而 fixture 是一種更加靈活的方式,它與 setup / teardown 比起來有幾個好處:

  • 可設定作用範圍,避免不必要的重複操作。
  • 可以設定自動調用 fixture 內的函式,不用傳到 test 內。
  • 可以在多個測試共用同一個 fixture,而 setup / teardown 通常只能用一個。

使用的方式也很簡單,在函數上一行加上@pytest.fixture() 即可。括號內可填入範圍 scope 或自動調用 autouse 等等。

yield

可以透過 yield 在 pytest 實現 setup / teardown 的作法,假設我們要做瀏覽器的初始化:

@pytest.fixture()
def browser():
print('open browser')
yield
print('close browser')

我們可以透過 yield 區隔開 setup 與 teardown,測試結束前執行上面的code,測試結束後執行下面的code。

實例

透過上面講的,我們可以並列使用多個 fixture,假設現在測試要打開首頁並且登入:

@pytest.fixture()
def open_homepage():

@pytest.fixture()
def login():

def test_login(open_homepage, login):

把兩個 fixture 放在同一個 test 中就可以並列使用。


上一篇
D16 pytest.ini
下一篇
D18 pytest 插件(1) pytest-xdist 平行測試
系列文
利用Python完成自動化測試專案30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言