* Sample Class (Person Class):

class Person ():
    name_ls = []

def set_name(self, new_name: str):
    self.name_ls.append (new_name)
    return len (self.name_ls) - 1  # returning index

def get_name(self, ind: int):
    if ind < len (self.name_ls):
        return self.name_ls[ind]
    else:
        return None


if __name__ == '__main__':
    myperson = Person ()

    print ('User xyz has been added with id ', myperson.set_name ('xyz'))
    print ('User abc has been added with id ', myperson.set_name ('abc'))
    
    print ('User associated with id 0 is ', myperson.get_name (0))
    print ('User associated with id 1 is ', myperson.get_name (1))
    
    print ('User associated with id 0 is ', myperson.get_name (17))
    print (myperson.name_ls)

* Sample Unittest Class (PersonTest.py):

import Person as PersonClass
import unittest

class Test (unittest.TestCase):
    po = PersonClass.Person ()
    test_name_ls = []
    sample_ind_ls = []

def test_0_set_name(self):  # Caution: test_(execution_index_must)_fname()
    for i in range (5):
    local_name = str (i) * 2
    test_ind = self.po.set_name (new_name=local_name)
    self.assertIsNotNone (test_ind)
    self.test_name_ls.append (local_name)
    self.sample_ind_ls.append (test_ind)

def test_1_get_name(self):  # test_(execution_index_must)_f()
    for ind, nname in enumerate(self.test_name_ls):
    self.assertEqual (nname, self.po.get_name (ind))


if __name__ == '__main__':
    unittest.main ()

Output:

============================= test session starts ==============================
collecting ... collected 2 items

PersonTest.py::Test::test_0_set_name PASSED                              [ 50%]
PersonTest.py::Test::test_1_get_name PASSED                              [100%]

============================== 2 passed in 0.01s ===============================