class_docstr: Test PapermillOperator.
docstr: Test missing Input or Output notebooks.
docstr_tok: ["Test","missing","Input","or","Output","notebooks","."]
code: def test_mandatory_attributes(self):
      """Test missing Input or Output notebooks."""
      with pytest.raises(
          ValueError, match="Input notebook is not specified"
      ):
          PapermillOperator(
              task_id="missing_input_nb", output_nb="foo-bar"
          )
  
      with pytest.raises(
          ValueError, match="Output notebook is not specified"
      ):
          PapermillOperator(
              task_id="missing_input_nb", input_nb="foo-bar"
          )
  
file_path: airflow/tests/providers/papermill/operators/test_papermill.py
imports: from __future__ import annotations
  from unittest.mock import MagicMock, patch
  import pytest
  from airflow.providers.papermill.hooks.kernel import JUPYTER_KERNEL_CONTROL_PORT, JUPYTER_KERNEL_HB_PORT, JUPYTER_KERNEL_IOPUB_PORT, JUPYTER_KERNEL_SHELL_PORT, JUPYTER_KERNEL_STDIN_PORT
  from airflow.providers.papermill.operators.papermill import REMOTE_KERNEL_ENGINE, NoteBook, PapermillOperator
  from airflow.utils import timezone
label_desc: Use image node_id 1 for calling the TestPapermillOperator obj's underlying member method code with example usage: obj.test_mandatory_attributes() without return types