您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關Pytest中conftest.py怎么用,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
我們之前了解了fixture,fixture可以直接定義在測試腳本中,但是有些時候,我們希望一個fixture可以被復用,這就需要對fixture進行集中管理,Pytest使用文件conftest.py
集中管理固件.在復雜的項目中,可以在不同的目錄層級定義conftest.py,其作用域為其所在的目錄和子目錄,通常情況下,conftest.py
和@pytest.fixture()
會結合使用,來實現全局的前后置處理。
conftest.py
文件的名稱是固定的,不能修改
conftest.py
與運行的用例要在同一個pakage下,并且有__init__.py
文件
不需要import
導入conftest.py
文件,pytest用例會自動識別該文件,放到根目錄下可以全局目錄調用,放在某個package下,那就在該package內有效
不同目錄可以有自己的conftest.py,一個項目中可以有多個conftest.py
pytest會默認讀取conftest.py
里面的所有fixture,所有同目錄測試文件運行前都會執行conftest.py
文件
在我們實際的測試中,conftest.py文件需要結合fixture來使用,所以fixture中參數scope也適用conftest.py中fixture的特性,這里再說明一下
conftest中fixture的scope參數為session,所有的測試文件執行前(后)執行一次conftest.py
文件中的fixture。
conftest中fixture的scope參數為module,每一個測試.py文件執行前(后)都會執行一次conftest.py
文件中的fixture
conftest中fixture的scope參數為class,每一個測試文件中的測試類執行前(后)都會執行一次conftest.py
文件中的fixture
conftest中fixture的scope參數為function,所有文件的測試用例執行前(后)都會執行一次conftest.py
文件中的fixture
我們按照這樣的目錄新建一個項目
在根目錄conftestdemo下
根目錄中的conftest.py文件中,一般寫全局的fixture,比如登錄
conftest.py
import pytest @pytest.fixture(scope="session") def login(): print("***登錄成功,返回用戶名***") name = "rockche" yield name print("***退出登錄***") @pytest.fixture(autouse=True) def get_name(login): name = login print(f"--每個用例都調用外層fixiture:打印用戶name:{name}--")
根目錄下的測試用例
test_1.py
def test_get_name(login): name = login print("***基礎用例:獲取用戶name***") print(f"用戶名:{name}")
運行conftestdemo下的所有用例
run.py
import pytest if __name__ == '__main__': pytest.main(["-s", "../conftestdemo/"])
配置針對baidu網站的測試用例獨有的fixture
conftest.py
import pytest @pytest.fixture(scope="module") def open_baidu(login): name = login print(f"用戶 {name} 打開baidu")
test_case1.py
def test_case2_01(open_baidu): print("搜索pytest") def test_case2_02(open_baidu): print("搜索博客園")
test_cnblogs目錄下
沒有__init__.py
文件也沒有conftest.py文件
test_case1.py
def test_no_fixture(login): print("沒有__init__文件,直接進入cnblogs", login)
test_taobao目錄下
配置針對taobao網站的測試用例獨有的fixture
conftest.py
import pytest @pytest.fixture(scope="function") def open_taobao(login): name = login print(f"用戶 {name} 進入淘寶")
test_case1.py
class TestTaobao: def test_case1_01(self, open_taobao): print("選購商品") def test_case1_02(self, open_taobao): print("進入結算界面")
運行run.py
關于“Pytest中conftest.py怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。