Редактировать: Резюме
Проходя через ваш тестовый пример с помощью отладчика, похоже, что это ограничение запуска программы PyDev, не поддерживающего setUpClass()
, по крайней мере, не с 1.6.5, который я использую.
Возможно, это будет исправлено в v2.0 PyDev, но в то же время, я думаю, нам придется придерживаться вместо использования __init__()
, как предполагает CarlS .
Подробнее
Класс PyDev 1.6.5 PyDevTestSuite использует:
def run(self, result):
for index, test in enumerate(self._tests):
if result.shouldStop:
break
test(result)
# Let the memory be released!
self._tests[index] = None
return result
, который очень похож на TestSuite.run () в python 2.6, тогда как TestSuite.run () в unittest Python 2.7.1 делает гораздо больше:
def run(self, result, debug=False):
topLevel = False
if getattr(result, '_testRunEntered', False) is False:
result._testRunEntered = topLevel = True
for test in self:
if result.shouldStop:
break
if _isnotsuite(test):
self._tearDownPreviousClass(test, result)
self._handleModuleFixture(test, result)
self._handleClassSetUp(test, result)
result._previousTestClass = test.__class__
if (getattr(test.__class__, '_classSetupFailed', False) or
getattr(result, '_moduleSetUpFailed', False)):
continue
if not debug:
test(result)
else:
test.debug()
if topLevel:
self._tearDownPreviousClass(None, result)
self._handleModuleTearDown(result)
return result
Старый ответ
Я подозреваю, что это может быть связано с версией Python, на которую ссылаются.
Если вы проверите Window> Preferences> PyDev> Interpreter - Python и посмотрите, какой интерпретатор Python используется, вы можете обнаружить, что это pre v2.7, где, если я правильно помню, был представлен setUpClass.
Ссылка на более новую версию python, и я подозреваю, что ваши тесты будут работать как есть.