Нужна небольшая помощь в исправлении декоратора для unittest. Я не уверен, как выполнить требования модульного тестирования. Идея этого декоратора состоит в том, чтобы пометить тест как ожидаемый сбой, если передается значение True. В противном случае можно просто запустить тест. Этот декоратор работает для функций теста, но не работает для определений классов
import unittest
def expectedFailureIf(expFailure):
if expFailure:
return unittest.expectedFailure
return lambda func: func
@expectedFailureIf(GetCurrentOS() == kPlatMac) # Fails on Class
class someClass(unittest.TestCase):
#@expectedFailureIf(GetCurrentOS() == kPlatMac) # Works on Function
def test_sometestA(self):
assert True
def test_sometestB(self):
assert False
Ошибка, которую я получаю, test_sometest () принимает ровно 1 аргумент. Удаление декоратора позволяет запустить тест. Перемещение декоратора в начало функции позволяет запустить тест.
История ... Одна из моих платформ работает нормально, а другая - нет. Я хочу позволить одной платформе выполнять все тесты, в то время как другая платформа будет помечена как ожидаемые сбои. Конечно, я не хочу использовать пропустить или пропустить, если. Поскольку это не позволит запустить действующую платформу. Пометка их как ожидаемого сбоя также не будет работать, поскольку одна платформа вернет неожиданный успех. При наличии ожидаемого отказа в работе () каждая платформа будет правильно сообщать, и как только все будет исправлено, эти тесты будут сообщать о неожиданном успехе. Который уведомит меня, когда все будет исправлено. Для меня ... это кажется лучшим результатом.