def set_timeout(testsuite, seconds=None):
"""
add timout to test case if it didn't have one,
@param testsuite testsuite form loader()
@param seconds: timeout seconds
@return: updated testsuite
"""
def _testset(testsuite):
"""interate tcs in testsuite"""
for each in testsuite:
if not isinstance(each, unittest.BaseTestSuite):
yield each
else:
for each2 in _testset(each):
yield each2
if seconds:
for tc in _testset(testsuite):
assert hasattr(tc, "_testMethodName"), \
"%s is not an unittest.TestCase object"
testMethod = getattr(tc, tc._testMethodName)
test_func = testMethod.im_func
if not hastimeout(test_func):
tc.run = timeout(seconds)(tc.run)
return testsuite
评论列表
文章目录