Esempio n. 1
0
def test_column_fallback(sa):
    engine = sa.create_engine("sqlite://")

    data = pd.DataFrame({
        "name": ["Frank", "Steve", "Jane", "Frank", "Michael"],
        "age": [16, 21, 38, 22, 10],
        "pet": ["fish", "python", "cat", "python", "frog"],
    })

    data.to_sql(name="test_sql_data", con=engine, index=False)
    dataset = SqlAlchemyDataset("test_sql_data", engine=engine)
    assert set(dataset.get_table_columns()) == {"name", "age", "pet"}

    fallback_dataset = SqlAlchemyDataset("test_sql_data", engine=engine)
    # override columns attribute to test fallback
    fallback_dataset.columns = fallback_dataset.column_reflection_fallback()
    assert set(fallback_dataset.get_table_columns()) == {"name", "age", "pet"}

    # check that the results are the same for a few expectations
    assert dataset.expect_column_to_exist(
        "age") == fallback_dataset.expect_column_to_exist("age")

    assert dataset.expect_column_mean_to_be_between(
        "age",
        min_value=10) == fallback_dataset.expect_column_mean_to_be_between(
            "age", min_value=10)

    # Test a failing expectation
    assert dataset.expect_table_row_count_to_equal(
        value=3) == fallback_dataset.expect_table_row_count_to_equal(value=3)
def test_column(sa):
    engine = sa.create_engine("sqlite://")

    data = pd.DataFrame(
        {
            "name": ["Frank", "Steve", "Jane", "Frank", "Michael"],
            "age": [16, 21, 38, 22, 10],
            "pet": ["fish", "python", "cat", "python", "frog"],
        }
    )
    data.to_sql(name="test_sql_data", con=engine, index=False)
    dataset = SqlAlchemyDataset("test_sql_data", engine=engine)
    assert set(dataset.get_table_columns()) == {"name", "age", "pet"}

    obs = dataset.columns
    # Hacks to check instances of types
    for col in obs:
        col["type"] = str(col["type"])

    assert len(obs) == 3
    for column in [
        {
            "name": "name",
            "type": "TEXT",
            "nullable": True,
            "default": None,
            "autoincrement": "auto",
            "primary_key": 0,
        },
        {
            "name": "age",
            "type": "BIGINT",
            "nullable": True,
            "default": None,
            "autoincrement": "auto",
            "primary_key": 0,
        },
        {
            "name": "pet",
            "type": "TEXT",
            "nullable": True,
            "default": None,
            "autoincrement": "auto",
            "primary_key": 0,
        },
    ]:
        assert column in obs