This is an automated email from the ASF dual-hosted git repository.
pierrejeambrun pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new b3f57c51af9 AIP-84 Improve testing (#44381)
b3f57c51af9 is described below
commit b3f57c51af93666c7601c4aea7b7134704e2630f
Author: Pierre Jeambrun <[email protected]>
AuthorDate: Tue Nov 26 21:54:21 2024 +0800
AIP-84 Improve testing (#44381)
---
.../core_api/routes/public/test_task_instances.py | 63 ++++++----------------
1 file changed, 16 insertions(+), 47 deletions(-)
diff --git a/tests/api_fastapi/core_api/routes/public/test_task_instances.py
b/tests/api_fastapi/core_api/routes/public/test_task_instances.py
index 2cae2869b3a..0ae2f4a9a9f 100644
--- a/tests/api_fastapi/core_api/routes/public/test_task_instances.py
+++ b/tests/api_fastapi/core_api/routes/public/test_task_instances.py
@@ -24,14 +24,12 @@ from unittest import mock
import pendulum
import pytest
-import sqlalchemy
from sqlalchemy import select
from airflow.jobs.job import Job
from airflow.jobs.triggerer_job_runner import TriggererJobRunner
from airflow.models import DagRun, TaskInstance
from airflow.models.baseoperator import BaseOperator
-from airflow.models.dag import DAG
from airflow.models.dagbag import DagBag
from airflow.models.renderedtifields import RenderedTaskInstanceFields as RTIF
from airflow.models.taskinstancehistory import TaskInstanceHistory
@@ -1852,23 +1850,10 @@ class
TestPostClearTaskInstances(TestTaskInstanceEndpoint):
)
assert response.status_code == 200
- # We check args individually instead of direct matching using
- # assert_called_once_with(), because the session objects don't match
- # and can't be skipped using mock.ANY.
- mock_clearti.assert_called_once()
- args, kwargs = mock_clearti.call_args
- assert len(args) == 4
- assert len(kwargs) == 0
- # 1st argument
- assert args[0] == []
- # 2nd argument
- assert args[1] is not None
- assert isinstance(args[1], sqlalchemy.orm.session.Session)
- # 3rd argument
- assert args[2].dag_id, dag_id
- assert isinstance(args[2], DAG)
- # 4th argument
- assert args[3] == DagRunState.QUEUED
+ # dag_id (3rd argument) is a different session object. Manually
asserting that the dag_id
+ # is the same.
+ mock_clearti.assert_called_once_with([], mock.ANY, mock.ANY,
DagRunState.QUEUED)
+ assert mock_clearti.call_args[0][2].dag_id == dag_id
def test_clear_taskinstance_is_called_with_invalid_task_ids(self,
test_client, session):
"""Test that dagrun is running when invalid task_ids are passed to
clearTaskInstances API."""
@@ -2506,34 +2491,18 @@ class TestPatchTaskInstance(TestTaskInstanceEndpoint):
"triggerer_job": None,
}
- mock_set_ti_state.assert_called_once()
- # We check args individually instead of direct matching using
- # assert_called_once_with(), because the session objects don't match
- # and can't be skipped using mock.ANY.
- mock_set_ti_state.assert_called_once()
- args, kwargs = mock_set_ti_state.call_args
- assert len(args) == 0
- assert len(kwargs) == 10
- # 1st keyword argument
- assert kwargs["task_id"] == self.TASK_ID
- # 2nd keyword argument
- assert kwargs["run_id"] == self.RUN_ID
- # 3rd keyword argument
- assert kwargs["map_indexes"] == [-1]
- # 4th keyword argument
- assert kwargs["state"] == self.NEW_STATE
- # 5th keyword argument
- assert kwargs["upstream"] is False
- # 6th keyword argument
- assert kwargs["downstream"] is False
- # 7th keyword argument
- assert kwargs["future"] is False
- # 8th keyword argument
- assert kwargs["past"] is False
- # 9th keyword argument
- assert kwargs["commit"] is True
- # 10th keyword argument
- assert isinstance(kwargs["session"], sqlalchemy.orm.session.Session)
+ mock_set_ti_state.assert_called_once_with(
+ commit=True,
+ downstream=False,
+ upstream=False,
+ future=False,
+ map_indexes=[-1],
+ past=False,
+ run_id=self.RUN_ID,
+ session=mock.ANY,
+ state=self.NEW_STATE,
+ task_id=self.TASK_ID,
+ )
@mock.patch("airflow.models.dag.DAG.set_task_instance_state")
def test_should_not_call_mocked_api_for_dry_run(self,
mock_set_task_instance_state, test_client, session):