0
콘솔에 예쁜 색상을 적용 할 수 있도록 작은 콘솔 래퍼를 쓰고 있습니다. 내가 사용하는 모듈의 삭감 버전은 여기에 있습니다 :모의, 가져 오기 및 적용
from sys import stderr
try:
from fabulous.color import fg256
clog = lambda x: stderr.write(
str(fg256(63, u'\u26A0 ' + str(x).encode('utf-8') + '\n').as_utf8))
except ImportError:
_green = '\033[1;32m'
_default = '\033[1;m'
clog = lambda x: stderr.write(_green +
u'\u26A0 ' +
str(x).encode('utf-8') +
_default +
'\n')
내가 쉽게 from mycolour improt clog
을 사용하는 일부 단위 테스트 및 멋진 여부의 존재에 따라 뽑힐 것이다 clog
의 올바른 버전을 작성할 수 있습니다. 그러나 λ람다가로드되면 언로드 할 수 없습니다. 따라서 코드의 두 경로를 테스트 (py.test를 통해)하려는 시도는 두 번째 테스트에서 실패합니다.
어떻게하면 100 % 테스트 커버리지를 얻을 수 있습니까?
try:
import builtins
except ImportError:
import __builtin__ as builtins
import unittest
from mock import MagicMock
from mock import patch
from mock import call
class ColourFabulousTest(unittest.TestCase):
def setUp(self):
pass
@patch('mycolours.stderr')
def test_fabulous_clog(self, err):
from mycolours import clog
err.write = MagicMock()
clog('ook')
self.assertTrue(err.write.called)
self.assertEqual([call('\x1b[38;5;63m\xe2\x9a\xa0 ook\n\x1b[39m')],
err.write.call_args_list)
def tearDown(self):
pass
class ColourANSITest(unittest.TestCase):
def setUp(self):
self.realimport = builtins.__import__
def myimport(name, globals, locals, fromlist, level=0):
if name == 'fabulous.color':
raise ImportError
return self.realimport(name, globals, locals, fromlist, level)
builtins.__import__ = myimport
def test_ansi_clog(self):
from mycolours import clog
builtins.__import__ = self.realimport
with patch('mycolours.stderr') as err:
clog('ook')
self.assertTrue(err.write.called)
self.assertEqual([call(u'\x1b[1;32m\u26a0 ook\x1b[1;m\n')],
err.write.call_args_list)
def tearDown(self):
builtins.__import__ = self.realimport
왜 -1 ...? ... – Sardathrion