Test Runner
TheTestRunner class provides a fluent API for executing data quality tests against tables cataloged in Collate. It automatically fetches table metadata and service connections, letting you run tests with minimal configuration.
The TestRunner lets you:
- Execute tests defined in code against cataloged tables.
- Run tests previously configured in the Collate UI.
- Load test definitions from YAML workflow files.
- Validate data at the table and column levels.
- Get detailed test results for programmatic handling.
Note: If you’re using Collate Cloud, see External Secrets Managers for more information.
Basic Usage
The following sections walk through each step of running a test, from creating a runner to processing results.Creating a TestRunner
Create a runner for a specific table using its fully qualified name (FQN):{service}.{database}.{schema}.{table}.
Adding Tests
Add test definitions to the runner:Adding Multiple Tests
Useadd_tests() to add several tests at once:
Running Tests
Execute all configured tests:Complete Example
Here’s a complete example of testing a customer table:Running Tests from Collate UI
Instead of defining tests in code, run tests that data stewards have configured in the Collate UI. This enables a collaborative workflow where:- Data stewards define and maintain test criteria in the UI.
- Engineers execute those tests automatically in pipelines.
- Test definitions stay synchronized with business requirements.
- Engineers don’t need to modify code when test criteria change.
- All stakeholders own data quality.
Customizing Test Metadata
Customize test names, display names, and descriptions:Configuring Row Count Computation
Some tests support computing the number and percentage of rows that passed or failed:- Identifying the scope of data quality issues.
- Prioritizing remediation efforts.
- Tracking data quality trends over time.
Test Runner Configuration
Customize the test runner behavior using thesetup() method:
Configuration Parameters
The table below lists all parameters accepted by thesetup() method.
Understanding Test Results
Test results contain detailed information about test execution:Test Status Values
Each test result includes one of the following status values.Success: Test passed all validation criteria.Failed: Test did not meet validation criteria.Aborted: Test execution was interrupted or could not complete.
Integration with ETL Workflows
Integrate TestRunner into your extract, transform, load (ETL) pipelines:Error Handling
Handle potential errors gracefully:Best Practices
Follow these guidelines to get the most out of the TestRunner API.-
Use descriptive test names: Make test failures easy to understand.
-
Use UI-defined tests: Let data stewards define test criteria.
-
Handle results programmatically: Don’t just print—take action.
- Use appropriate thresholds: Set realistic min/max values based on data patterns.
- Combine table and column tests: Ensure both structural and content quality.
Using External Secrets Managers
Why This is Required
TheTestRunner API executes data quality tests directly from your Python code (for example, within your ETL pipelines). To connect to your data sources, it needs to:
- Retrieve the service connection configuration from Collate.
- Decrypt the credentials stored in your secrets manager.
- Establish a connection to the data source.
- Execute the test cases.
General Setup Steps
-
Contact your Collate administrator to obtain:
- The secrets manager type (AWS, Azure, GCP, and so on).
- The secrets manager loader configuration.
- Required environment variables or configuration files.
- Any additional setup (IAM roles, service principals, and so on).
- Install required dependencies for your secrets manager provider.
- Configure environment variables with access credentials.
- Initialize the SecretsManagerFactory before using TestRunner.
- Configure the SDK and run your tests.
Example Using AWS Secrets Manager
Required Dependencies:Configuration by Provider
Find the configuration details for your secrets manager provider below.AWS and AWS Parameter Store
Collate’s ingestion extras:aws (for example, pip install 'openmetadata-ingestion[aws]')
SecretsManagerProvider: (one of)
SecretsManagerProvider.awsSecretsManagerProvider.managed_awsSecretsManagerProvider.aws_ssmSecretsManagerProvider.managed_aws_ssm
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_DEFAULT_REGION
Azure Key Vault
Collate’s ingestion extras:azure (for example, pip install 'openmetadata-ingestion[azure]')
SecretsManagerProvider: (one of)
SecretsManagerProvider.azure_kvSecretsManagerProvider.managed_azure_kv
AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_IDAZURE_KEY_VAULT_NAME
Google Cloud Secret Manager
Collate’s ingestion extras:gcp (for example, pip install 'openmetadata-ingestion[gcp]')
SecretsManagerProvider: SecretsManagerProvider.gcp
Environment variables:
GOOGLE_APPLICATION_CREDENTIALS: Path to the credentials JSON file.GCP_PROJECT_ID
Troubleshooting
-
Issue: “Cannot decrypt service connection”
Cause: Secrets manager not initialized or misconfigured.
Solution: Ensure
SecretsManagerFactoryis initialized before callingconfigure()or creating theTestRunner. -
Issue: “Access Denied” or “Unauthorized”
Cause: Insufficient permissions to access secrets.
Solution:
- Verify IAM role/service principal has correct permissions.
- Check credentials are valid and not expired.
- Ensure correct region/vault name is specified.
-
Issue: “Module not found” for secrets manager
Cause: Missing dependencies for your secrets manager.
Solution: Install required extras:
-
Issue: Tests Fail with Connection Errors
Cause: Credentials not properly decrypted or secrets manager misconfigured.
Solution:
- Verify secrets manager provider matches your Collate backend configuration.
- Test credential access independently (for example, using AWS CLI, Azure CLI, and gcloud).
- Check network connectivity to secrets manager service.
-
Enable debug logging to see detailed error messages:
Contact Your Administrator
If you’re unsure about:- Which secrets manager your organization uses.
- Required environment variables or configuration.
- Access credentials or IAM roles.
- Permissions needed.
Next Steps
Once you have TestRunner working, explore these related guides.- Learn about DataFrame Validation for validating transformations.
- Review the Test Definitions Reference for all available tests.
- Explore Advanced Usage including YAML workflows.