code: def test_post_execute(setup):
      op = MyOperand3(_output_types=[OutputType.tensor])
      t = op.new_tileable(None, dtype=np.dtype(float), shape=())
      with pytest.raises(ValueError, match="intend to fail"):
          t.execute()
  
      op = MyOperand5(_output_types=[OutputType.tensor])
      t2 = op.new_tileable(None, dtype=np.dtype(float), shape=())
  
      def execute_error(*_):
          raise ValueError("intend to fail again")
  
      with pytest.raises(ValueError, match="intend to fail again"):
          operand_executors = {MyOperand4: execute_error}
          t2.execute(
              extra_config={"operand_executors": operand_executors}
          ).fetch()
  
      def execute_normally(ctx, op):
          ctx[op.outputs[0].key] = 1
  
      operand_executors = {MyOperand5: execute_normally}
      assert (
          t2.execute(
              extra_config={"operand_executors": operand_executors}
          ).fetch()
          == 2
      )
  
imports: import numpy
  import pandas
  import pytest
  from ....dataframe import core
  from ...None import OutputType
  from ..None import Operand, TileableOperandMixin, execute, estimate_size, ShuffleProxy
label_desc: Use image node_id 4 for calling a global function with example usage: test_post_execute(setup) without return types