code: def test_04_01_measurement_columns(self):
      workspace, module = self.make_workspace(
          (np.zeros((10, 10)), np.zeros((10, 10)), np.zeros((10, 10))),
          (None, None, None),
      )
      assert isinstance(module, Align)
      columns = module.get_measurement_columns(workspace.pipeline)
      assert len(columns) == 6
      for i in range(3):
          for axis in ("X", "Y"):
              feature = MEASUREMENT_FORMAT % (axis, "Aligned%d" % i)
              assert feature in [c[1] for c in columns]
      assert all([c[0] == "Image" for c in columns])
      assert all([c[2] == COLTYPE_INTEGER for c in columns])
  
imports: from io import StringIO
  import numpy
  from cellprofiler_core.constants.measurement import COLTYPE_INTEGER
  from cellprofiler_core.measurement import Measurements
  from cellprofiler_core.modules.align import Align, A_SIMILARLY, A_SEPARATELY, M_MUTUAL_INFORMATION, C_SAME_SIZE, C_CROP, C_PAD, M_CROSS_CORRELATION, MEASUREMENT_FORMAT, C_ALIGN
  from cellprofiler_core.object import ObjectSet
  from cellprofiler_core.pipeline import Pipeline, LoadException
  from cellprofiler_core.preferences import set_headless
  from cellprofiler_core.workspace import Workspace
  from tests.core.modules import read_example_image
  from cellprofiler_core.image import ImageSetList, Image
label_desc: Use image node_id 14 for calling the TestAlign obj's underlying member method code with example usage: obj.test_04_01_measurement_columns() without return types