我重构了add()
,这样我就可以通过编写正则表达式模式来轻松输出错误,以便在换行符中查找包含负数或结尾的任何内容。但是,我进入控制台以确保正确打印错误并意识到它不会打印出换行符。有没有办法实际打印出换行符而不是控制台打印出额外的空格?
我想看到的内容:
ValueError: -1, -2, \n
我目前得到的内容:
ValueError: -1, -2
生产:
def add(expr):
"""Returns an evaluated sum or raises an error."""
errors = re.findall(r"(-\d+|\n$)", expr)
if any(errors):
raise ValueError("Errors: {}".format(", ".join(errors)))
return __result(expr)
def __result(expr):
"""Returns the evaluated sum of the expression."""
delim = __delimiter(expr)
return sum([int(i) for i in expr.replace("\n", delim).split(delim) if
i.strip().isdigit()])
测试
class TestStringCalculator(unittest.TestCase):
def test_add_invalid_string(self):
"""Should raise error if invalid string."""
with self.assertRaises(ValueError):
add("1,\n")
def test_add_negative_digits(self):
"""Should raise error if negatives found."""
with self.assertRaises(ValueError):
add("-1,2")