dbnl.experimental

create_test

dbnl.experimental.create_test(*, test_spec_dict: TestSpecDict) → dict[str, Any]

Create a new Test Spec

  • Parameters:test_spec_dict – A dictionary containing the Test Spec schema.

  • Raises:

    • DBNLNotLoggedInError – dbnl SDK is not logged in.

    • DBNLAPIValidationError – Test Spec does not conform to expected format.

    • DBNLDuplicateError – Test Spec with the same name already exists in the Project.

  • Returns: The JSON dict of the created Test Spec object. The return JSON will contain the id of the Test Spec.

Test Spec JSON Structure

{
    "project_id": string,

    # Test data
    "name": string, // must be unique to Project
    "description": string | null,
    "statistic_name": string,
    "statistic_params": map[string, any],
    "statistic_inputs": list[
        {
            "select_query_template": {
                "select": string, // a column or a function on column(s)
                "filter": string | null
            }
        }
    ],
    "assertion": {
        "name": string,
        "params": map[string, any]
    },
    "tag_ids": string[] | null
}

get_or_create_tag

dbnl.experimental.get_or_create_tag(*, project_id: str, name: str, description: str | None = None) → dict[str, Any]

Get the specified Test Tag or create a new one if it does not exist

  • Parameters:

    • project_id – The id of the Project that this Test Tag is associated with.

    • name – The name of the Test Tag to create or retrieve.

    • description – An optional description of the Test Tag. Limited to 255 characters.

  • Returns: The dictionary containing the Test Tag

  • Raises:DBNLNotLoggedInError – dbnl SDK is not logged in.

Sample Test Tag JSON

{
    # Tag metadata
    "id": string,
    "org_id": string,
    "created_at": timestamp,
    "updated_at": timestamp,

    # Tag data
    "name": string,
    "author_id": string,
    "description": string?,
    "project_id": string,
}

get_test_sessions

dbnl.experimental.get_test_sessions(*, project: Project) → list[TestSession]

Get all Test Sessions in the given Project

  • Parameters:project – Project from which to retrieve Test Sessions

  • Returns: List of Test Sessions

  • Raises:DBNLNotLoggedInError – dbnl SDK is not logged in.

get_tests

dbnl.experimental.get_tests(*, test_session_id: str) → list[dict[str, Any]]

Get all Tests executed in the given Test Session

  • Parameters:test_session_id – Test Session ID

  • Returns: List of test JSONs

  • Raises:DBNLNotLoggedInError – dbnl SDK is not logged in.

Sample Test JSON

{
    # Test metadata
    "id": string,
    "org_id": string,
    "created_at": timestamp,
    "updated_at": timestamp,
    "test_session_id": string,

    # Test data
    "author_id": string,
    "value": any?,
    "failure": string?,
    "status": enum(PENDING, RUNNING, PASSED, FAILED),
    "started_at": timestamp?,
    "completed_at": timestamp?,

    # Test Spec data
    "test_spec_id": id,
    "name": string,
    "description": string?,
    "statistic_name": string,
    "statistic_params": map[string, any],
    "assertion": {
        "name": string,
        "params": map[string, any]
        "status": enum(...),
        "failure": string?
    },
    "statistic_inputs": list[
        {
        "select_query_template": {
            "select": string
        }
        }
    ],
    "tag_ids": string[]?,
    }

prepare_incomplete_test_spec_payload

dbnl.experimental.prepare_incomplete_test_spec_payload(*, test_spec_dict: IncompleteTestSpecDict, project_id: str | None = None) → TestSpecDict

Formats a Test Spec payload for the API. Add project_id if it is not present. Replace tag_names with tag_ids.

  • Parameters:

    • test_spec_dict – A dictionary containing the Test Spec schema.

    • project_id – The Project ID, defaults to None. If project_id does not exist in test_spec_dict, it is required as an argument.

  • Raises:DBNLInputValidationError – Input does not conform to expected format

  • Returns: The dictionary containing the newly formatted Test Spec payload.

wait_for_test_session

dbnl.experimental.wait_for_test_session(*, test_session: TestSession, timeout_s: int = 180) → TestSession

Wait for a Test Session to finish. Polls every 3 seconds until it is completed.

  • Parameters:

    • test_session – The TestSession to wait for

    • timeout_s – The total wait time (in seconds) for Test Session to complete, defaults to 180.

  • Returns: The completed TestSession

  • Raises:

    • DBNLNotLoggedInError – dbnl SDK is not logged in.

    • DBNLError – Test Session did not complete after waiting for the timeout_s seconds

Was this helpful?