欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1. conftest.py 是什么?

  • 核心配置文件,用于存放測試用例的共享邏輯
  • 自動被 pytest 發(fā)現(xiàn),無需顯式導(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    # 測試用例1
    │   └── test_db.py     # 測試用例2
    

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

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

import pytest
import psycopg2

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

在測試用例中使用(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)用

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

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

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

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

5. 作用域控制

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

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

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

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

場景:測試不同瀏覽器的兼容性
conftest.py 中添加:

import pytest

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

測試用例自動運(yùn)行3次:

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

7. 最佳實(shí)踐

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

8. 完整示例

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

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

層級配置生效順序:

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

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

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

相關(guān)文章

最新評論