Я хочу напечатать в Python 3.6, используя цветной , если этот пакет доступен, например:
print('{}Hello, world!{}'.format(colored.fg(1), colored.attr(0)))
Однако я хочу сделать colored
необязательным, если это возможно, в то время какпо-прежнему печатать любой текст, который может быть стилизован.Простое создание функции-обертки для печати кажется неадекватным из-за множества способов, которыми вы можете использовать colored
, таких как colored.stylize()
и добавление цветов вместе:
cheerful = colored.fg('cyan') + colored.attr('bold')
print(colored.stylize("Hello, world!", cheerful, colored.attr("underlined"))
Хотя для тестирования обычно используется насмешка, Является ли приемлемой практика создания фиктивной библиотеки для использования, если дополнительная библиотека недоступна ?Примерно так, в модуле под названием colored_mock
(насмешка, как описано в этом вопросе ):
from unittest.mock import Mock
import sys
import types
module_name = 'mock_colored'
mock_colored = types.ModuleType(module_name)
sys.modules[module_name] = mock_colored
# following the original definition
def stylize(string, styles, reset=True):
# return the original string so it can be used
return string
mock_colored.stylize = Mock(name=module_name+'.stylize', side_effect=stylize)
# and so on until most of the module attributes and functions are covered
Таким образом, я могу сделать:
try:
import colored
except ImportError:
from .mock_colored import mock_colored as colored