Pytest中conftest.py的用法
前言
在之前介紹fixture的文章中,我們使用到了conftest.py文件,那么conftest.py文件到底該如何使用呢,下面我們就來詳細(xì)了解一下conftest.py文件的特點(diǎn)和使用方法吧
什么是conftest.py
我們之前了解了fixture,fixture可以直接定義在測試腳本中,但是有些時候,我們希望一個fixture可以被復(fù)用,這就需要對fixture進(jìn)行集中管理,Pytest使用文件conftest.py
集中管理固件.在復(fù)雜的項目中,可以在不同的目錄層級定義conftest.py,其作用域為其所在的目錄和子目錄,通常情況下,conftest.py
和@pytest.fixture()
會結(jié)合使用,來實(shí)現(xiàn)全局的前后置處理。
conftest.py特點(diǎn)
conftest.py
文件的名稱是固定的,不能修改conftest.py
與運(yùn)行的用例要在同一個pakage下,并且有__init__.py
文件- 不需要
import
導(dǎo)入conftest.py
文件,pytest用例會自動識別該文件,放到根目錄下可以全局目錄調(diào)用,放在某個package下,那就在該package內(nèi)有效 - 不同目錄可以有自己的conftest.py,一個項目中可以有多個
conftest.py
- pytest會默認(rèn)讀取
conftest.py
里面的所有fixture,所有同目錄測試文件運(yùn)行前都會執(zhí)行conftest.py
文件
conftest.py用法
在我們實(shí)際的測試中,conftest.py文件需要結(jié)合fixture來使用,所以fixture中參數(shù)scope也適用conftest.py中fixture的特性,這里再說明一下
- conftest中fixture的scope參數(shù)為session,所有的測試文件執(zhí)行前(后)執(zhí)行一次
conftest.py
文件中的fixture。 - conftest中fixture的scope參數(shù)為module,每一個測試.py文件執(zhí)行前(后)都會執(zhí)行一次
conftest.py
文件中的fixture - conftest中fixture的scope參數(shù)為class,每一個測試文件中的測試類執(zhí)行前(后)都會執(zhí)行一次
conftest.py
文件中的fixture - conftest中fixture的scope參數(shù)為function,所有文件的測試用例執(zhí)行前(后)都會執(zhí)行一次
conftest.py
文件中的fixture
conftest.py實(shí)際案例
我們按照這樣的目錄新建一個項目
在根目錄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"--每個用例都調(diào)用外層fixiture:打印用戶name:{name}--")
根目錄下的測試用例
test_1.py
def test_get_name(login): name = login print("***基礎(chǔ)用例:獲取用戶name***") print(f"用戶名:{name}")
運(yùn)行conftestdemo下的所有用例
run.py
import pytest if __name__ == '__main__': pytest.main(["-s", "../conftestdemo/"])
test_baidu目錄下
配置針對baidu網(wǎng)站的測試用例獨(dú)有的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__文件,直接進(jìn)入cnblogs", login)
test_taobao目錄下
配置針對taobao網(wǎng)站的測試用例獨(dú)有的fixture
conftest.py
import pytest @pytest.fixture(scope="function") def open_taobao(login): name = login print(f"用戶 {name} 進(jìn)入淘寶")
test_case1.py
class TestTaobao: def test_case1_01(self, open_taobao): print("選購商品") def test_case1_02(self, open_taobao): print("進(jìn)入結(jié)算界面")
運(yùn)行run.py
到此這篇關(guān)于Pytest中conftest.py的用法的文章就介紹到這了,更多相關(guān)Pytest conftest.py內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python中使用dwebsocket實(shí)現(xiàn)后端數(shù)據(jù)實(shí)時刷新
dwebsocket是Python中一款用于實(shí)現(xiàn)WebSocket協(xié)議的庫,可用于后端數(shù)據(jù)實(shí)時刷新。在Django中結(jié)合使用dwebsocket和Channels,可以實(shí)現(xiàn)前后端的實(shí)時通信,支持雙向數(shù)據(jù)傳輸和消息推送,適用于實(shí)時聊天、數(shù)據(jù)監(jiān)控、在線游戲等場景2023-04-04Python3實(shí)現(xiàn)的字典、列表和json對象互轉(zhuǎn)功能示例
這篇文章主要介紹了Python3實(shí)現(xiàn)的字典、列表和json對象互轉(zhuǎn)功能,結(jié)合實(shí)例形式分析了Python使用json模塊針對json格式數(shù)據(jù)編碼轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2018-05-05使用Python進(jìn)行數(shù)據(jù)備份的指南大全
利用Python進(jìn)行數(shù)據(jù)備份與恢復(fù)是一種常見的做法,對于數(shù)據(jù)庫,你可以使用Python中的數(shù)據(jù)庫連接庫(如sqlite3、SQLAlchemy等)連接到數(shù)據(jù)庫,然后執(zhí)行備份操作,將數(shù)據(jù)庫的內(nèi)容保存到一個備份文件中,本文給大家介紹了使用Python進(jìn)行數(shù)據(jù)備份的指南大全,需要的朋友可以參考下2024-05-05一些讓Python代碼簡潔的實(shí)用技巧總結(jié)
隨著項目代碼行數(shù)的增加,不可避免的遇到軟件架構(gòu)腐敗的問題,所以如何寫出簡潔的代碼至關(guān)重要,這篇文章主要給大家介紹了一些讓Python代碼簡潔的實(shí)用技巧,需要的朋友可以參考下2021-08-08Python+Pytorch實(shí)戰(zhàn)之彩色圖片識別
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Pytorch實(shí)現(xiàn)彩色圖片識別功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2022-09-09