Closes #13258: Use callable() built-in in the standard library.
diff --git a/Lib/unittest/loader.py b/Lib/unittest/loader.py
index afdff67..cb92fd2 100644
--- a/Lib/unittest/loader.py
+++ b/Lib/unittest/loader.py
@@ -113,7 +113,7 @@
return self.suiteClass([inst])
elif isinstance(obj, suite.TestSuite):
return obj
- if hasattr(obj, '__call__'):
+ if callable(obj):
test = obj()
if isinstance(test, suite.TestSuite):
return test
@@ -138,7 +138,7 @@
def isTestMethod(attrname, testCaseClass=testCaseClass,
prefix=self.testMethodPrefix):
return attrname.startswith(prefix) and \
- hasattr(getattr(testCaseClass, attrname), '__call__')
+ callable(getattr(testCaseClass, attrname))
testFnNames = testFnNames = list(filter(isTestMethod,
dir(testCaseClass)))
if self.sortTestMethodsUsing:
diff --git a/Lib/unittest/suite.py b/Lib/unittest/suite.py
index 38bd6b8..cde5d38 100644
--- a/Lib/unittest/suite.py
+++ b/Lib/unittest/suite.py
@@ -42,7 +42,7 @@
def addTest(self, test):
# sanity checks
- if not hasattr(test, '__call__'):
+ if not callable(test):
raise TypeError("{} is not callable".format(repr(test)))
if isinstance(test, type) and issubclass(test,
(case.TestCase, TestSuite)):