亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

pytest conftest.py使用的小結(jié)

 更新時(shí)間:2025年10月31日 11:54:11   作者:一半煙火以謀生  
pytest的conftest.py是核心配置文件, 本文就來(lái)詳細(xì)介紹pytest conftest.py使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

1. conftest.py 是什么?

  • 核心配置文件,用于存放測(cè)試用例的共享邏輯
  • 自動(dòng)被 pytest 發(fā)現(xiàn),無(wú)需顯式導(dǎo)入
  • 支持功能:夾具(fixture)、鉤子函數(shù)(hooks)、插件配置

2. 基礎(chǔ)環(huán)境搭建

  1. 安裝 pytest:
    pip install pytest
    
  2. 創(chuàng)建項(xiàng)目結(jié)構(gòu):
    project/
    ├── tests/
    │   ├── conftest.py    # 核心配置文件
    │   ├── test_api.py    # 測(cè)試用例1
    │   └── test_db.py     # 測(cè)試用例2
    

3. 夾具(fixture)實(shí)戰(zhàn)

場(chǎng)景:多個(gè)測(cè)試用例共享數(shù)據(jù)庫(kù)連接
conftest.py 中添加:

import pytest
import psycopg2

@pytest.fixture(scope="module")
def db_connection():
    """創(chuàng)建數(shù)據(jù)庫(kù)連接(模塊級(jí)共享)"""
    conn = psycopg2.connect("dbname=test user=postgres")
    yield conn  # 測(cè)試執(zhí)行時(shí)返回連接
    conn.close()  # 測(cè)試結(jié)束后自動(dòng)關(guān)閉

在測(cè)試用例中使用(test_db.py):

def test_user_count(db_connection):
    cursor = db_connection.cursor()
    cursor.execute("SELECT COUNT(*) FROM users")
    assert cursor.fetchone()[0] > 0

4. 鉤子函數(shù)(hooks)應(yīng)用

場(chǎng)景:自定義測(cè)試報(bào)告頭信息
conftest.py 中添加:

def pytest_report_header(config):
    """在報(bào)告中顯示自定義環(huán)境信息"""
    return "測(cè)試環(huán)境: Production v2.1 | 執(zhí)行人: ${USER}"

運(yùn)行測(cè)試時(shí)將顯示:

============================ test session starts ============================
測(cè)試環(huán)境: Production v2.1 | 執(zhí)行人: alice

5. 作用域控制

層級(jí)說(shuō)明示例路徑
目錄級(jí)影響當(dāng)前目錄及子目錄/tests/conftest.py
多級(jí)嵌套支持不同目錄的獨(dú)立配置/tests/api/conftest.py
全局項(xiàng)目根目錄的配置全局生效/conftest.py

優(yōu)先級(jí)規(guī)則

  1. 子目錄 > 父目錄
  2. 就近原則

6. 高級(jí)技巧:參數(shù)化夾具

場(chǎng)景:測(cè)試不同瀏覽器的兼容性
conftest.py 中添加:

import pytest

@pytest.fixture(params=["chrome", "firefox", "edge"])
def browser(request):
    """參數(shù)化瀏覽器驅(qū)動(dòng)"""
    driver = setup_browser(request.param)
    yield driver
    driver.quit()

測(cè)試用例自動(dòng)運(yùn)行3次:

def test_login(browser):
    browser.get("https://example.com/login")
    # 斷言登錄頁(yè)面標(biāo)題
    assert "Login" in browser.title

7. 最佳實(shí)踐

  1. 避免過(guò)度使用:僅在需要共享邏輯時(shí)使用
  2. 命名規(guī)范:夾具名稱應(yīng)具有描述性(如 db_connection
  3. 作用域選擇
    • function(默認(rèn)):每個(gè)測(cè)試函數(shù)執(zhí)行一次
    • class:每個(gè)測(cè)試類執(zhí)行一次
    • module:每個(gè)模塊執(zhí)行一次
    • session:整個(gè)測(cè)試會(huì)話執(zhí)行一次
  4. 調(diào)試技巧:查看夾具生效情況
    pytest --fixtures  # 顯示所有可用夾具
    

8. 完整示例

項(xiàng)目結(jié)構(gòu):

project/
├── conftest.py                 # 全局配置
├── tests/
│   ├── conftest.py             # 測(cè)試目錄配置
│   ├── test_api.py
│   └── web/
│       ├── conftest.py         # 子目錄專屬配置
│       └── test_ui.py

層級(jí)配置生效順序:

  1. web/conftest.py
  2. tests/conftest.py
  3. 根目錄 conftest.py

通過(guò)合理使用 conftest.py,可將測(cè)試代碼復(fù)用率提升 60%+,同時(shí)保持測(cè)試邏輯的清晰隔離。

到此這篇關(guān)于pytest conftest.py使用的小結(jié)的文章就介紹到這了,更多相關(guān)pytest conftest.py使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

最新評(píng)論