Bir veri hattının birim testi

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 beklendiği gibi çalıştığını doğrular
  • Veriyi doğrulamaya yardımcı olur

Birim 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

# Build a unit test, asserting the type of clean_stock_data
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"

# Check if pipeline_type is an instance of a str
isinstance(pipeline_type, str)
True
# Assert that the pipeline does indeed take value "ETL"
assert pipeline_type == "ETL"
# Combine assert and isinstance
assert isinstance(pipeline_type, str)
Python ile ETL ve ELT

AssertionError

pipeline_type = "ETL"

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

Fixtures ile 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'lerde birim testleri

def test_transformed_data(clean_data):
    # Include other assert statements here
    ...

    # Check number of columns
    assert len(clean_data.columns) == 4

    # Check the lower bound of a column
    assert clean_data["open"].min() >= 0

    # Check the range of a column by chaining statements with "and"
    assert clean_data["open"].min() >= 0 and clean_data["open"].max() <= 1000

Python ile ETL ve ELT

Ayo berlatih!

Python ile ETL ve ELT

Preparing Video For Download...