-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_dataset_generator.py
More file actions
42 lines (32 loc) · 1.28 KB
/
Copy pathtest_dataset_generator.py
File metadata and controls
42 lines (32 loc) · 1.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
"""
tests/test_dataset_generator.py
--------------------------------
Unit tests for synthetic dataset generator in generate_dataset.py.
"""
import sys
from pathlib import Path
import pandas as pd
import pytest
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from generate_dataset import generate_dataset, introduce_errors, make_clean_row, random_date
class TestDatasetGenerator:
"""Test suite for synthetic dataset generation utility."""
def test_random_date_returns_valid_iso_string(self):
d_str = random_date()
assert isinstance(d_str, str)
parsed_dt = pd.to_datetime(d_str)
assert parsed_dt.year in [2022, 2023, 2024]
def test_make_clean_row_structure(self):
row = make_clean_row(i=42)
assert isinstance(row, dict)
assert row["id_venta"] == 42
assert "precio" in row
assert "cantidad" in row
assert "fecha" in row
def test_generate_dataset_introduces_expected_dirty_data(self):
df = generate_dataset(n=200)
assert isinstance(df, pd.DataFrame)
assert len(df) > 200 # Should include duplicate rows added by introduce_errors
assert "codigo_venta" in df.columns
# Verify intentional dirty characteristics
assert df.isnull().sum().sum() > 0