#python #with-statement
Вопрос:
Класс Python unittest.Testcase
имеет ряд функций проверки, включая ту, которая проверяет, было ли выдвинуто утверждение:
311 - def assertRaises(self, excClass, callableObj, *args, **kwargs):
319 try:
320 callableObj(*args, **kwargs)
321 except excClass:
322 return
323 else:
324 if hasattr(excClass,'__name__'): excName = excClass.__name__
325 else: excName = str(excClass)
326 raise self.failureException, "%s not raised" % excName
Пользователь расширяет TestCase
и использует вышеуказанное следующим образом:
with self.AssertRaises(ValueError):
x = 5/"3"
И вы поднимаете ошибку, если вы не поднимаете ValueError
Я хотел бы извлечь эту функцию TestCase
и использовать ее в своем тестовом сценарии таким же образом, но я не знаю, как заставить assertRaises
функцию работать в with
инструкции.
Как можно осуществить эту трансформацию? Я не вижу в TestCase
исходном коде ничего, что устанавливало бы контекст. Нет никаких __enter__
__exit__
функций или и TestCase
ничего не расширяет.
Комментарии:
1. Вы смотрите не на тот исходный код. Смотрите здесь: github.com/python/cpython/blob/…