Bir veri hattını birim testleriyle test etme

Python ile ETL ve ELT

Jake Roach

Data Engineer

Birim testleriyle bir veri hattını doğrulama

Birim testleri:

  • Yazılım mühendisliği iş akışlarında yaygın
  • Kodun bekleneni yaptığını garantiler
  • Veriyi doğrulamaya yardımcı olur

Birim testleri ve uçtan uca testleri içeren tipik bir veri hattı doğrulama çerçevesi.

Python ile ETL ve ELT

Birim testleri için pytest

from pipeline import extract, transform, load

# clean_stock_data türünü doğrulayan bir birim test yaz
def test_transformed_data():
    raw_stock_data = extract("raw_stock_data.csv")
    clean_stock_data = transform(raw_data)
    assert isinstance(clean_stock_data, pd.DataFrame)
> python -m pytest

test_transformed_data .                                                     [100%]
================================ 1 passed in 1.17s ===============================
Python ile ETL ve ELT

assert ve isinstance

pipeline_type = "ETL"

# pipeline_type bir str örneği mi kontrol et
isinstance(pipeline_type, str)
True
# Hattın gerçekten "ETL" değerini aldığını doğrula
assert pipeline_type == "ETL"
# assert ve isinstance'ı birleştir
assert isinstance(pipeline_type, str)
Python ile ETL ve ELT

AssertionError

pipeline_type = "ETL"

# Bir AssertionError oluştur
assert isinstance(pipeline_type, float)
Traceback (most recent call last):
  File "<stdin>", line 4, in <module>
AssertionError
Python ile ETL ve ELT

fixture'larla veri hattı bileşenlerini taklit etme

import pytest

@pytest.fixture()
def clean_data():
    raw_stock_data = extract("raw_stock_data.csv")
    clean_stock_data = transform(raw_data)
    return clean_stock_data
def test_transformed_data(clean_data):
    assert isinstance(clean_data, pd.DataFrame)
Python ile ETL ve ELT

DataFrame'leri birim testinden geçirme

def test_transformed_data(clean_data):
    # Buraya başka assert ifadeleri ekle
    ...

    # Sütun sayısını kontrol et
    assert len(clean_data.columns) == 4

    # Bir sütunun alt sınırını kontrol et
    assert clean_data["open"].min() >= 0

    # "and" ile zincirleyerek bir sütunun aralığını kontrol et
    assert clean_data["open"].min() >= 0 and clean_data["open"].max() <= 1000

Python ile ETL ve ELT

Hadi pratik yapalım!

Python ile ETL ve ELT

Preparing Video For Download...