def test_jinja_env_creation(self, mock_jinja_env): """Verify if a Jinja environment is created only once when templating.""" with DAG("test-dag", start_date=DEFAULT_DATE): task = MockOperator(task_id="op1", arg1="{{ foo }}", arg2="{{ bar }}") task.render_template_fields(context={"foo": "whatever", "bar": "whatever"}) self.assertEqual(mock_jinja_env.call_count, 1)
def test_render_template_fields(self): """Verify if operator attributes are correctly templated.""" with DAG("test-dag", start_date=DEFAULT_DATE): task = MockOperator(task_id="op1", arg1="{{ foo }}", arg2="{{ bar }}") # Assert nothing is templated yet self.assertEqual(task.arg1, "{{ foo }}") self.assertEqual(task.arg2, "{{ bar }}") # Trigger templating and verify if attributes are templated correctly task.render_template_fields(context={"foo": "footemplated", "bar": "bartemplated"}) self.assertEqual(task.arg1, "footemplated") self.assertEqual(task.arg2, "bartemplated")
def test_render_template_fields_native_envs(self): """Verify if operator attributes are correctly templated to Native Python objects.""" with DAG("test-dag", start_date=DEFAULT_DATE, render_template_as_native_obj=True): task = MockOperator(task_id="op1", arg1="{{ foo }}", arg2="{{ bar }}") # Assert nothing is templated yet assert task.arg1 == "{{ foo }}" assert task.arg2 == "{{ bar }}" # Trigger templating and verify if attributes are templated correctly task.render_template_fields(context={ "foo": ["item1", "item2"], "bar": 3 }) assert task.arg1 == ["item1", "item2"] assert task.arg2 == 3