-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtests.py
86 lines (73 loc) · 2.64 KB
/
tests.py
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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
"""This module has unit tests for the dataframe_validation"""
import unittest
import pandas as pd
import numpy as np
from constraints import StandardConstraints, CustomConstraints
from verifiers import StandardVerifier
# Testing data from Kaggle:
# https://www.kaggle.com/datasets/jillanisofttech/brain-stroke-dataset
d1 = pd.read_csv(r"test_data/brain_stroke.csv")
d2 = pd.read_csv(r"test_data/brain_stroke_bad.csv")
s = StandardConstraints()
s.generate_constraints(d1)
s.modify_constraint("work_type", {"nullable": False})
s.modify_constraint("age", {"unique": True})
c = CustomConstraints()
c.add_custom_constraint("rule1", "age > 80")
c.add_custom_constraint("rule2", "gender == 'Female'")
c.add_custom_constraint("rule3", "gender == 'Male'")
class TestConstraints(unittest.TestCase):
"""Test cases for StandardConstraints"""
def test_discovery(self) -> None:
"""Test data type"""
self.assertEqual(s.get_data_type(d1, "stroke"), "bool")
self.assertEqual(s.is_nullable(d1, "gender"), False)
self.assertEqual(s.is_unique(d1, "bmi"), False)
self.assertEqual(s.max_length(d1, "Residence_type"), 5)
self.assertEqual(s.min_length(d1, "Residence_type"), 5)
self.assertEqual(
s.value_range(d1, "work_type"),
{"Govt_job", "Private", "Self-employed", "children", np.NaN},
)
self.assertEqual(
s.min_value(d1, "avg_glucose_level"),
55.12,
)
self.assertEqual(
s.max_value(d1, "avg_glucose_level"),
271.74,
)
self.assertIs(type(s.constraints), dict)
class TestVerifier(unittest.TestCase):
"""Test cases for DataVerifier"""
v1 = StandardVerifier(d1, s.constraints)
def test_checks(self):
"""Test null values"""
self.assertEqual(
self.v1.check_nullable(s.constraints["age"]["nullable"], "age"), 0
)
self.assertEqual(
self.v1.check_unique(s.constraints["age"]["unique"], "age"), 4877
)
self.assertEqual(
self.v1.check_min_length(
s.constraints["gender"]["min_length"], "gender"
),
0,
)
self.assertEqual(
self.v1.check_max_length(
s.constraints["Residence_type"]["max_length"], "Residence_type"
),
0,
)
self.assertEqual(
self.v1.check_max_value(s.constraints["bmi"]["max_value"], "bmi"),
0,
)
self.assertEqual(
self.v1.check_min_value(s.constraints["bmi"]["min_value"], "bmi"),
0,
)
if __name__ == "__main__":
unittest.main()