class_docstr: Mixin to test a bunch of common functionality in models
  deriving from RecommenderBase
code: def test_similar_users_batch(self):
      model = self._get_model()
      model.fit(get_checker_board(256), show_progress=False)
      userids = np.arange(50)
  
      try:
          ids, scores = model.similar_users(userids, N=10)
      except NotImplementedError:
          # similar users isn't implemented for many models (ItemItemRecommeder/ ANN models)
          return
  
      self.assertEqual(ids.shape, (50, 10))
  
      for userid in userids:
          # first user returned should be itself, and score should be ~1.0
          self.assertEqual(ids[userid][0], userid)
          self.assertAlmostEqual(scores[userid][0], 1.0, places=4)
  
          # the rest of the users should be even or odd depending on the userid
          for r in ids[userid]:
              self.assertEqual(r % 2, userid % 2)
  
imports: import os
  import pickle
  import random
  import tempfile
  import numpy
  import pytest
  from numpy.testing import assert_array_equal
  from scipy.sparse import coo_matrix, csr_matrix
  from implicit.evaluation import precision_at_k
  from implicit.nearest_neighbours import ItemItemRecommender
  from implicit.utils import ParameterWarning
label_desc: Use image node_id 7 for calling the RecommenderBaseTestMixin obj's underlying member method code with example usage: obj.test_similar_users_batch() without return types