code: def test_log(self):
      with self._exp() as exp:
          var = StringSeries(exp, self._random_path())
          var.log([str(val) for val in range(0, 5000)])
          self.assertEqual("4999", var.fetch_last())
          values = list(var.fetch_values()["value"].array)
          expected = list(range(0, 5000))
          self.assertEqual(len(set(expected)), len(set(values)))
  
file_path: neptune-client/tests/unit/neptune/new/attributes/series/test_string_series.py
imports: from mock import MagicMock, patch
  from neptune.attributes.series.string_series import StringSeries
  from tests.unit.neptune.new.attributes.test_attribute_base import TestAttributeBase
label_desc: Use image node_id 3 for calling the TestStringSeries obj's underlying member method code with example usage: obj.test_log() without return types