Как пропустить unittest case в python 2.6

unittest.skip* декораторы и методы, как показано ниже (см. здесь для более подробной информации) были добавлены после python2.7, и я обнаружил, что они весьма полезны.

unittest.skip(reason)
unittest.skipIf(condition, reason)
unittest.skipUnless(condition, reason)

Однако, мой вопрос заключается в том, как мы должны делать то же самое, если работаем с python2.6?

Ответ 1

Используйте unittest2.

Следующий код импортирует правый unittest способом, прозрачным для остальной части вашего кода:

import sys
if sys.version_info < (2, 7):
    import unittest2 as unittest
else:
    import unittest

Ответ 2

Если вы не можете использовать unittest2 и не против иметь другое количество тестов в Python 2.6, вы можете написать простые декораторы, которые заставляют тесты исчезать:

try:
    from unittest import skip, skipUnless
except ImportError:
    def skip(f):
        return lambda self: None

    def skipUnless(condition, reason):
        if condition:
            return lambda x: x
        else:
            return lambda x: None

Ответ 3

Если у вас есть свобода установки дополнительных пакетов, вы можете использовать unittest2, который представляет собой Python 2.7 unittest, переданный в Python 2.3+. Он содержит декодеры пропуска.