Я хотел бы знать, как написать Python 3 unittest для try except
блоков, которые определены вне определений функций в модуле Python.
Представьте, что в package/module.py
у меня есть блок кода, такой как:
import os
try:
CONSTANT = os.environ['NOT_EXISTING_KEY']
except KeyError:
CONSTANT = False
finally:
del os
(пожалуйста, не обращайте внимания на реальный код, я знаю, что я мог бы использовать os.getenv('NOT_EXISTING_KEY', False)
в этом конкретном случае c, то, что меня интересует, - это действительно тестирование того, что блок try-exc в модуле (вне функции) ведет себя как положено.
Как мне написать модульный тест, который проверяет, что package.module.CONSTANT
установлен в ожидаемое значение?
В файле unittest (я использую pytest) у меня есть что-то вроде:
from package.module import CONSTANT
def test_constant_true():
assert CONSTANT == 'expected_value'
, чтобы проверить, что если блок try выполнен правильно, то CONSTANT соответствует ожидаемому.
Однако я не знаю, как смоделировать механизм импорта, чтобы os.environ в блоке try выдало исключение, и я могу проверить, что CONSTANT имеет значение False.
Как я могу сделать это?