現在我們已經知道了,fixtures是一個非常強大的功能,
那么有的時候,我們可能會寫一個fixture,而這個fixture所有的測驗函式都會用到它,那這個時候,就可以用
autouse自動讓所有的測驗函式都請求它,不需要在每個測驗函式里顯示的請求一遍,
具體用法就是,將autouse=True傳遞給fixture的裝飾器即可,
import pytest
@pytest.fixture
def first_entry():
return "a"
@pytest.fixture
def order(first_entry):
return []
@pytest.fixture(autouse=True)
def append_first(order, first_entry):
return order.append(first_entry)
def test_string_only(order, first_entry):
assert order == [first_entry]
def test_string_and_int(order, first_entry):
order.append(2)
assert order == [first_entry, 2]
先來看第一個測驗函式test_string_only(order, first_entry)的執行情況:
- 雖然在測驗函式里請求了2個fixture函式,但是
order拿到的并不是[],first_entry拿到的也并不是"a", - 因為存在了一個
autouse=True的fixture函式,所以append_first先會被呼叫執行, - 在執行
append_first程序中,又分別請求了order、 first_entry這2和fixture函式, - 接著,
append_first對分別拿到的[]和"a"進行append處理,最侄訓傳了["a"],
所以,斷言assert order == [first_entry]是成功的,
同理,第二個測驗函式test_string_and_int(order, first_entry)的執行程序亦是如此,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/265825.html
標籤:其他
