2024-05-28 09:30:30 +02:00
|
|
|
from typing import List
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
|
|
from metadata.generated.schema.tests.basic import TestCaseStatus
|
|
|
|
from metadata.generated.schema.tests.testCase import TestCase
|
|
|
|
|
|
|
|
|
|
|
|
class TestDataQuality:
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
"test_case_name,expected_status",
|
|
|
|
[
|
|
|
|
("first_name_includes_john", TestCaseStatus.Success),
|
|
|
|
("first_name_is_john", TestCaseStatus.Failed),
|
|
|
|
],
|
|
|
|
)
|
|
|
|
def test_data_quality(
|
|
|
|
self, run_test_suite_workflow, metadata, test_case_name, expected_status
|
|
|
|
):
|
|
|
|
test_cases: List[TestCase] = metadata.list_entities(
|
|
|
|
TestCase, fields=["*"], skip_on_failure=True
|
|
|
|
).entities
|
|
|
|
test_case: TestCase = next(
|
2024-06-05 21:18:37 +02:00
|
|
|
(t for t in test_cases if t.name.root == test_case_name), None
|
2024-05-28 09:30:30 +02:00
|
|
|
)
|
|
|
|
assert test_case is not None
|
|
|
|
assert test_case.testCaseResult.testCaseStatus == expected_status
|