code: def test_lifting_vec(self, n_reps, atol):
      while True:
          point = self.data_generator.random_point()
          base_point = self.data_generator.random_point()
          try:
              expected = self.space.metric.lifting(point, base_point)
              break
          except ValueError:
              # algorithm does not work for several cases
              pass
  
      vec_data = generate_vectorization_data(
          data=[
              dict(
                  point=point,
                  base_point=base_point,
                  expected=expected,
                  atol=atol,
              )
          ],
          arg_names=["point", "base_point"],
          expected_name="expected",
          n_reps=n_reps,
      )
      self._test_vectorization(vec_data)
  
imports: import pytest
  import geomstats.backend
  from geomstats.geometry.grassmannian import Grassmannian
  from geomstats.test.test_case import TestCase
  from geomstats.test.vectorization import generate_vectorization_data
  from geomstats.test_cases.geometry.base import LevelSetTestCase
  from geomstats.test_cases.geometry.riemannian_metric import RiemannianMetricTestCase
label_desc: Use image node_id 3 for calling the StiefelCanonicalMetricTestCase obj's underlying member method code with example usage: obj.test_lifting_vec(n_reps, atol) without return types