Skip to main content

TestRunner - Running Table-Level Tests

The TestRunner class provides a fluent API for executing data quality tests against tables cataloged in OpenMetadata. It automatically fetches table metadata and service connections, allowing you to run tests with minimal configuration.

Table of contents

⚠️ If you’re using OpenMetadata Cloud to run OpenMetadata, please refer to the section about External Secrets Managers

Overview

TestRunner enables you to:
  • Execute tests defined in code against cataloged tables
  • Run tests previously configured in the OpenMetadata UI
  • Load test definitions from YAML workflow files
  • Validate data at the table and column levels
  • Get detailed test results for programmatic handling

Basic Usage

Creating a TestRunner

Create a runner for a specific table using its fully qualified name (FQN):
The table FQN format is: {service}.{database}.{schema}.{table}

Adding Tests

Add test definitions to the runner:

Adding Multiple Tests

Use add_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 OpenMetadata UI

Instead of defining tests in code, you can run tests that data stewards have configured in the OpenMetadata UI. This enables a collaborative workflow where:
  • Data stewards define and maintain test criteria in the UI
  • Engineers execute those tests automatically in pipelines
This approach ensures:
  • 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

You can customize test names, display names, and descriptions:
Or pass values directly to the constructor:

Configuring Row Count Computation

Some tests support computing the number and percentage of rows that passed or failed:
This provides detailed metrics about test failures, useful for:
  • 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 the setup() method:

Configuration Parameters

Understanding Test Results

Test results contain detailed information about test execution:

Test 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 ETL pipelines:

Error Handling

Handle potential errors gracefully:

Best Practices

  1. Use descriptive test names: Make test failures easy to understand
  2. Leverage UI-defined tests: Let data stewards define test criteria
  3. Handle results programmatically: Don’t just print - take action
  4. Use appropriate thresholds: Set realistic min/max values based on data patterns
  5. Combine table and column tests: Ensure both structural and content quality
If your organization uses an external secrets manager (AWS, Azure, GCP), see External Secrets Managers before using the TestRunner API.

Next Steps