__call__ 和 cmp_to_key 在unittest 中
def getTestCaseNames(self, testCaseClass):
"""Return a sorted sequence of method names found within testCaseClass
"""
# 判断是否是函数,可以判断是否有__call__. 被称为可调用对象。
def isTestMethod(attrname, testCaseClass=testCaseClass,
prefix=self.testMethodPrefix):
return attrname.startswith(prefix) and \
hasattr(getattr(testCaseClass, attrname), '__call__')
testFnNames = filter(isTestMethod, dir(testCaseClass))
# 默认是使用内置函数cmp 作为比较的key
if self.sortTestMethodsUsing:
print(self.sortTestMethodsUsing)
# 排序算法,from functools import cmp_to_key ,cmp_to_key 把比较方法转换成一个key 给 sort 用
testFnNames.sort(key=_CmpToKey(self.sortTestMethodsUsing))
return testFnNames