代码:
class RomanNumeralConverter(object):
def __init__(self):
self.digit_map = {"M":1000, "D":500, "C":100, "L":50, "X":10, "V":5, "I":1}
def convert_to_decimal(self, roman_numeral):
val = 0
for char in roman_numeral:
val += self.digit_map[char]
return val
import unittest
class RomanNumeralConverterTest(unittest.TestCase):
def setUp(self):
self.cvt = RomanNumeralConverter()
def test_parsing_millenia(self):
self.assertEquals(1000, self.cvt.convert_to_decimal("M"))
def test_parsing_century(self):
self.assertEquals(100, self.cvt.convert_to_decimal("C"))
class RomanNumeralConverterCombo(unittest.TestCase):
def setUp(self):
self.cvt = RomanNumeralConverter()
def test_multi_millenia(self):
self.assertEquals(4000, self.cvt.convert_to_decimal("MMMM"))
def test_add_up(self):
self.assertEquals(2010, self.cvt.convert_to_decimal("MMX"))
if __name__ == "__main__":
suite1 = unittest.TestLoader().loadTestsFromTestCase(RomanNumeralConverterTest)
suite2 = unittest.TestLoader().loadTestsFromTestCase(RomanNumeralConverterCombo)
suite = unittest.TestSuite([suite1, suite2])
unittest.TextTestRunner(verbosity=2).run(suite)
运行结果:
test_parsing_century (__main__.RomanNumeralConverterTest) ... ok
test_parsing_millenia (__main__.RomanNumeralConverterTest) ... ok
test_add_up (__main__.RomanNumeralConverterCombo) ... ok
test_multi_millenia (__main__.RomanNumeralConverterCombo) ... ok
----------------------------------------------------------------------
Ran 4 tests in 0.000s
OK
与上几节内容基本一致,只在main中有些不同
suite1 = unittest.TestLoader().loadTestsFromTestCase(RomanNumeralConverterTest)
suite2 = unittest.TestLoader().loadTestsFromTestCase(RomanNumeralConverterCombo)
suite = unittest.TestSuite([suite1, suite2])
unittest.TextTestRunner(verbosity=2).run(suite)