npx skills add ...
npx skills add looker-open-source/looker-skills --skill lookml-tests
Standards and best practices for writing LookML tests to ensure data integrity, accuracy, and logic validation.
npx skills add looker-open-source/looker-skills --skill lookml-tests
Testing is critical for maintaining trust in data. LookML tests allow us to verify that our semantic model behaves as expected and that the underlying data conforms to our assumptions.
tests/[explore_name].test.lkml.[explore_name].test.lkml (e.g., orders.test.lkml).Each test consists of an explore_source query and an assert statement.
Verify that Primary Keys remain unique after joins. This is the best defense against "fanout" errors caused by incorrect one_to_many join definitions.
Example: Primary Key Uniqueness
Validate specific measure values against known constants or expectations.
Example: Revenue is Positive
Ensure calculations behave as expected. For example, checking that gross_margin is never greater than revenue or that lifetime_orders is never NULL for an active user.
Example: Logic Check
orders_pk_is_unique) and assertions (order_id_is_unique).last 7 days) to limit the scan size for large tables, unless verifying full history is required.test files are included in the model file (e.g., include: "/tests/*.test.lkml").test: orders_pk_is_unique {
explore_source: orders {
column: order_id {}
column: count {}
# Limit to recent data to save costs/time if table is large
filters: {
field: orders.created_date
value: "last 7 days"
}
}
assert: order_id_is_unique {
expression: ${orders.count} = 1 ;;
}
}test: revenue_is_positive {
explore_source: orders {
column: total_revenue {}
filters: {
field: orders.created_date
value: "yesterday"
}
}
assert: revenue_greater_than_zero {
expression: ${orders.total_revenue} >= 0 ;;
}
}test: margin_less_than_revenue {
explore_source: orders {
column: total_revenue {}
column: total_margin {}
}
assert: margin_is_valid {
expression: ${orders.total_margin} <= ${orders.total_revenue} ;;
}
}