2025年1月15日 星期三

Pytest - Reading CSV Files


實際的自動化框架常需從CSV文件中讀取值,我們將利用Pytest的參數化功能,將其整合到自動化測試框架中。

1. 準備測試數據文件

測試數據可以存儲在各種文件格式中,在此以CSV文件為例,包含以下列:ID, Name, Course, City

2. 建立結構化目錄

3. 使用Python的pathlibcsv模組,來讀取CSV文件

import csv
from pathlib import Path

dataFile = 'data.csv' 
#定義資料檔案名稱
cfgFileDirectory = 'config'
#定義存放資料檔案的目錄

BASE_DIR = Path(__file__).resolve().parent.parent #專案的根目錄路徑
DATA_FILE = BASE_DIR.joinpath(cfgFileDirectory).joinpath(dataFile) #
組合出資料檔案的完整路徑

def get_data():
    with open(DATA_FILE, 'r') as f:
#開啟CSV檔案進行讀取
        reader = csv.reader(f) #建立CSV讀取對象
        next(reader) #跳過標題行
        data = [tuple(row) for row in reader] #資料轉換為元組並存入列表
  
    return data
print(get_data())

4. 使用Pytest的參數化功能來將CSV文件中的數據傳遞給測試函式

import pytest
from Pytest_Topics.utils.util import get_data

#參數化測試,將get_data()傳回的每行數據傳遞給測試函式
@pytest.mark.parametrize("a, b, c, d", get_data())
def test_checkdata_from_file(a, b, c, d):
    print(d)

沒有留言:

張貼留言