Skip to content

Commit ff10cd1

Browse files
add pandera hypothesis
1 parent 406908e commit ff10cd1

File tree

4 files changed

+95
-0
lines changed

4 files changed

+95
-0
lines changed
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import pandas as pd
2+
from pandas.testing import assert_frame_equal
3+
4+
5+
def processing_fn(df):
6+
processed = df.assign(val3=df.val1 / df.val2)
7+
return processed
8+
9+
10+
def test_processing_fn():
11+
# Create test data
12+
df = pd.DataFrame({"val1": [1, 1, -1, -2, 2], "val2": [1, 2, -2, -1, 2]})
13+
# Get result
14+
result = processing_fn(df)
15+
# Create expected output
16+
expected = df.copy()
17+
expected["val3"] = [1, 0.5, 0.5, 2, 1]
18+
# Test
19+
assert_frame_equal(result, expected, check_dtype=False)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import pandas as pd
2+
import pytest
3+
from pandas.testing import assert_frame_equal
4+
5+
6+
def processing_fn(df):
7+
processed = df.assign(val3=df.val1 / df.val2)
8+
return processed
9+
10+
11+
val1 = [[1, 1, -1, -2, 2], [1, 1, -1, -2, 2]]
12+
val2 = [[1, 2, -2, -1, 2], [1, 1, 1, 1, 1]]
13+
val3 = [[1, 0.5, 0.5, 2, 1], [1, 1, -1, -2, 2]]
14+
15+
16+
@pytest.mark.parametrize("val1,val2,val3", list(zip(val1, val2, val3)))
17+
def test_processing_fn(val1, val2, val3):
18+
# Create test data
19+
df = pd.DataFrame({"val1": val1, "val2": val2})
20+
21+
# Get result
22+
result = processing_fn(df)
23+
24+
# Create expected output
25+
expected = df.copy()
26+
expected["val3"] = val3
27+
28+
# Test
29+
assert_frame_equal(result, expected, check_dtype=False)
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import pandas as pd
2+
import pandera as pa
3+
4+
out_schema = pa.DataFrameSchema(
5+
{
6+
"val1": pa.Column(int, pa.Check.in_range(-2, 3)),
7+
"val2": pa.Column(int, pa.Check.in_range(-2, 3)),
8+
"val3": pa.Column(float, pa.Check.in_range(-2, 3)),
9+
}
10+
)
11+
12+
13+
@pa.check_output(out_schema)
14+
def processing_fn(df):
15+
processed = df.assign(val3=df.val1 / df.val2)
16+
return processed
17+
18+
19+
if __name__ == "__main__":
20+
df = pd.DataFrame({"val1": [1, 1, -1, -2, 2], "val2": [1, 1, -1, -2, 2]})
21+
processing_fn(df)
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import hypothesis
2+
import pandera as pa
3+
4+
schema = pa.DataFrameSchema(
5+
{
6+
"val1": pa.Column(int, pa.Check.in_range(-2, 3)),
7+
"val2": pa.Column(int, pa.Check.in_range(-2, 3)),
8+
}
9+
)
10+
11+
out_schema = schema.add_columns(
12+
{
13+
"val3": pa.Column(float, pa.Check.in_range(-2, 3)),
14+
},
15+
)
16+
17+
18+
@pa.check_output(out_schema)
19+
def processing_fn(df):
20+
processed = df.assign(val3=df.val1 / df.val2)
21+
return processed
22+
23+
24+
@hypothesis.given(schema.strategy(size=5))
25+
def test_processing_fn(dataframe):
26+
processing_fn(dataframe)

0 commit comments

Comments
 (0)