Compare commits

...

1 Commits

Author SHA1 Message Date
Jeremy Cohen
855837757c Unit test failure count based on changed rows 2024-04-15 01:55:40 +02:00
2 changed files with 14 additions and 1 deletions

View File

@@ -45,6 +45,7 @@ class UnitTestDiff(dbtClassMixin):
actual: List[Dict[str, Any]]
expected: List[Dict[str, Any]]
rendered: str
failures: int
@dataclass
@@ -236,11 +237,14 @@ class TestRunner(CompileRunner):
should_error = True
rendered = self._render_daff_diff(daff_diff)
rendered = f"\n\n{green('actual')} differs from {red('expected')}:\n\n{rendered}\n"
summary = daff_diff.getSummary()
failures = summary.row_deletes + summary.row_inserts + summary.row_updates
diff = UnitTestDiff(
actual=json_rows_from_table(actual),
expected=json_rows_from_table(expected),
rendered=rendered,
failures=failures,
)
return UnitTestResultData(
@@ -303,7 +307,7 @@ class TestRunner(CompileRunner):
if result.should_error:
status = TestStatus.Fail
message = result.diff.rendered if result.diff else None
failures = 1
failures = result.diff.failures if result.diff else 0
return RunResult(
node=test, # type: ignore

View File

@@ -53,6 +53,15 @@ class TestUnitTests:
# Select by model name
results = run_dbt(["test", "--select", "my_model"], expect_pass=False)
assert len(results) == 5
# the failing unit test should have 2 failures (= 1 row removed + 1 row added)
assert (
next(
r.failures
for r in results
if r.node.unique_id == "unit_test.test.my_model.test_my_model"
)
== 2
)
results = run_dbt(
["build", "--select", "my_model", "--resource-types", "model unit_test"],