Я кодирую с unittest и у меня вопрос. Я хочу пропустить тестовый случай в зависимости от глобальной переменной.аргументы глобальной переменной и аргументы декоратора
import unittest
_SKIP_TEST = False
all_suites = unittest.TestSuite()
class Test1(unittest.TestCase):
@unittest.skipIf(_SKIP_TEST, 'Test should be run')
def runTest(self):
global _SKIP_TEST
_SKIP_TEST = True
print('Test1 executed')
all_suites.addTest(Test1())
class Test2(unittest.TestCase):
@unittest.skipIf(_SKIP_TEST, 'Test should skipped')
def runTest(self):
print('Test2 executed')
all_suites.addTest(Test2())
if __name__ == '__main__':
unittest.TextTestRunner(verbosity=2).run(all_suites
Я думал, что test2 будет пропущен после выполнения test1 (глобальная переменная _SKIP_TEST устанавливается в True), но и тест был выполнен.
$ python test.py
runTest (__main__.Test1) ... Test1 executed
ok
runTest (__main__.Test2) ... Test2 executed
ok
----------------------------------------------------------------------
Ran 2 tests in 0.000s
OK
Это может быть, происходит из области видимости переменной или оценка ошибки синхронизации, или что-то я не знаю .... Как я могу сделать этот код работать, как я ожидал?
Спасибо.