pytest官方文檔解讀fixtures的autouse
現在我們已經知道瞭,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)的執行過程亦是如此。
以上就是pytest官方文檔解讀fixtures的autouse的詳細內容,更多關於pytest解讀fixtures的autouse的資料請關註WalkonNet其它相關文章!
推薦閱讀:
- pytest解讀fixture有效性及跨文件共享fixtures
- pytest官方文檔解讀fixtures調用fixtures及fixture復用性
- pytest解讀一次請求多個fixtures及多次請求
- Python自動化測試pytest中fixtureAPI簡單說明
- pytest自動化測試中的fixture的聲明和調用