Create a Test Case
Create a new test case instance applied to a specific table or column
POST
POST /v1/dataQuality/testCases
Create a Test Case
Create a new test case by linking a test definition to a specific table or column with concrete parameter values. The server associates the test case with the basic suite of the table inentityLink, creating that suite if needed. Omit testSuite from the create request. Automatically created suites are named <tableFQN>.testSuite. An existing basic suite keeps its name.
Body Parameters
string
required
Name of the test case. Must be unique within the target entity scope.
string
required
Fully qualified name (FQN) of the test definition to use. For example,
columnValueMaxToBeBetween. For a custom SQL test (the Custom SQL Query test type in the UI), use tableCustomSQLQuery. For a test case on a custom test definition you created, use that definition’s name, such as columnValuesMaxLength. For more information, see Custom SQL Test Cases.string
required
Entity link to the target table or column. Format:
<#E::table::tableFQN> for table-level or <#E::table::tableFQN::columns::colName> for column-level.array
Array of parameter name/value pairs as defined by the test definition.
string
Description of the test case in Markdown format.
string
Human-readable display name for the test case.
array
Array of reviewer references (users or teams). Each item accepts the same fields as
owners.boolean
Compute the passed and failed row count for the test case. Defaults to
false.boolean
Use dynamic assertion to evaluate the test case, if the test definition supports it. Defaults to
false.array
Names of the columns to group test results by. When set, the test runs overall and grouped by these columns. Defaults to
[].integer
Number of top dimension values to show before the rest are grouped as
Others. Accepts 1 to 50. Defaults to 5.string
Name of the data quality dimension for this test case. Defaults to the dimension of the test definition. Accepts a built-in dimension or any custom dimension registered in Settings > Preferences > Data Quality.
array
Array of owner references (users or teams) to assign.
POST /v1/dataQuality/testCases
Returns
Returns the created test case object with all specified properties and system-generated fields.Response
string
Unique identifier for the test case (UUID format).
string
Test case name.
string
Fully qualified name in format
table.column.testCaseName or table.testCaseName.string
Description of the test case.
object
Reference to the test definition.
object
Reference to the test suite.
string
Entity link to the target table or column.
array
Parameter values for this test case.
array
List of owners assigned to the test case.
number
Version number for the entity (starts at 0.1).
Create or Update (PUT)
UsePUT /v1/dataQuality/testCases instead of POST to perform an upsert. If a test case with the same fullyQualifiedName already exists, the server updates it. Otherwise, the server creates a new test case. PUT accepts the same body parameters as POST, including the optional description field. Both curl examples include description.
PUT updates an existing entity instead of returning a 409 conflict error.
Custom SQL Test Cases
OpenMetadata has two ways to run SQL in a test case:- Custom SQL test: the Custom SQL Query test type in the UI. The test case uses the built-in
tableCustomSQLQuerytest definition and carries the SQL itself inparameterValues. You don’t create a test definition. - Custom test definition: a reusable SQL template you create once, with
{{ paramName }}placeholders. Test cases then reference it by name. For more information, see Test Cases for a Custom Test Definition.
parameterValues. The server rejects any parameter that the test definition doesn’t declare in parameterDefinition, and requires every parameter marked required.
Custom SQL Test
The built-intableCustomSQLQuery test definition runs a SQL query against a table. It accepts these parameters:
Test Cases for a Custom Test Definition
A test case for a custom SQL test definition setstestDefinition to the definition’s name and passes one parameterValues entry per {{ paramName }} placeholder. The following request uses a custom columnValuesMaxLength definition, which declares maxLength, threshold, and thresholdUnit:
- Pass condition: The test case passes when the number of rows the SQL returns is within the tolerance. With no
threshold, any returned row fails the test case. - Threshold:
thresholdandthresholdUnitapply only if the test definition declaresthresholdUnit. WithABSOLUTE,thresholdis a row count. WithPERCENTAGE, it is a share of the evaluated rows and can’t exceed100. A negative or non-numericthresholdreturns a400error. - Row counts: Set
computePassedFailedRowCounttotrueto report passed and failed row counts.