import unittest class A: @classmethod def f(kls): pass class TestIsOperator(unittest.TestCase): CLASSMETHODS = ['dict.fromkeys', 'A.f'] def test_classmethod1(self): for cm in self.CLASSMETHODS: # consecutive calls to id(dict.fromkeys) returning different # values? expected = id(eval(cm)) x = eval(cm) # binding it to something changes the id for i in range(0,10): self.assertEqual(expected, id(eval(cm))) def test_classmethod2(self): for cm in self.CLASSMETHODS: self.assertIs(eval(cm), eval(cm)) x = eval(cm) self.assertIs(x, eval(cm)) self.assertIs(x, x) y = eval(cm) self.assertIs(x, y) if __name__ == '__main__': unittest.main()