code: def test_random_von_mises_fisher_shape(
      self, n_points, random_mu, max_iter=100
  ):
      mu = self.space.random_point() if random_mu else None
      kappa = self._get_random_kappa()
  
      try:
          point = self.space.random_von_mises_fisher(
              n_samples=n_points, mu=mu, kappa=kappa, max_iter=max_iter
          )
      except NotImplementedError:
          return
  
      expected_ndim = self.space.point_ndim + int(n_points > 1)
      self.assertEqual(gs.ndim(point), expected_ndim)
  
      self.assertAllEqual(
          gs.shape(point)[-self.space.point_ndim :], self.space.shape
      )
  
      if n_points > 1:
          self.assertEqual(gs.shape(point)[0], n_points)
  
imports: import random
  import pytest
  import scipy
  import geomstats.backend
  from geomstats.learning.frechet_mean import FrechetMean
  from geomstats.test.random import EmbeddedSpaceRandomDataGenerator, HypersphereIntrinsicRandomDataGenerator
  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.manifold import ManifoldTestCase
  from geomstats.vectorization import get_batch_shape
label_desc: Use image node_id 8 for calling the HypersphereExtrinsicTestCase obj's underlying member method code with example usage: obj.test_random_von_mises_fisher_shape(n_points, random_mu, max_iter) without return types