2017-10-17 4 views
0

로마 숫자 변환기를 검사하기 위해 작은 unittest를 실행하고 있습니다.self.assert Python 3.x unittesting에서 추적 오류가 발생했습니다

class RomConverter(object): 
    def __init__(self): 
     self.digital_mapping = {"M":1000, "D":500, "C":100, "L":50, "X":10, "V":5, "I":1} 
    def convert(self, rom_num): 
     value = 0  
     for char in rom_num: 
      val += self.digital_mapping[char] 
      return value 

import unittest 
class RomConverterTest(unittest.TestCase): 
    def settingUp(self): 
     print ("Creating a new RomConverter...") 
     self.cvt = RomConverter() 
    def tearDown(self): 
     print ("Destroying the RomConverter...") 
     self.cvt = None 
    def test_empty_num(self): 
     self.assertTrue(self.cvt.convert("") == 0) 
     self.assertFalse(self.cvt.convert("") > 0) 
    def test_no_rom_num(self): 
     self.assertRaises(TypeError,self.cvt.convert, None) 
if __name__ == "__main__": 
    unittest.main() 

하지만 코드를 실행할 때이 메시지가 무엇입니까 : -은 - : 여기 내 코드는

Traceback (most recent call last): 
    File "receipe2 - Copy.py", line 31, in test_empty_roman_numeral 
    self.assertTrue(self.cvt.convert_to_decimal("") == 0) 
AssertionError: False is not true 
+0

게시 한 오류의 오류는 게시하지 않았습니다. 'self.assertTrue (self.cvt.convert_to_decimal ("") == 0)'이 코드에서 언급되지 않았습니다. –

답변

1

난 당신의 코드에서 두 가지 문제를 참조하십시오.

먼저 def settingUp(self):

def setUp(self):

해야 그리고 def convert(self, rom_num):의 반환 훨씬 들여 쓰기됩니다. 결과에서 메서드는 빈 문자열을 0으로 반환하지 않습니다. 다음은 작동중인 버전입니다.

class RomConverter(object): 
    def __init__(self): 
     self.digital_mapping = {"M":1000, "D":500, "C":100, "L":50, "X":10, "V":5, "I":1} 
    def convert(self, rom_num): 
     value = 0 
     for char in rom_num: 
      value += self.digital_mapping[char] 
     return value 

import unittest 
class RomConverterTest(unittest.TestCase): 
    def setUp(self): 
     print ("Creating a new RomConverter...") 
     self.cvt = RomConverter() 
    def tearDown(self): 
     print ("Destroying the RomConverter...") 
     self.cvt = None 
    def test_empty_num(self): 
     self.assertTrue(self.cvt.convert("") == 0) 
     self.assertFalse(self.cvt.convert("") > 0) 
    def test_no_rom_num(self): 
     self.assertRaises(TypeError,self.cvt.convert, None) 

if __name__ == "__main__": 
    unittest.main() 
+0

그래, 나는 생각했다. 도와 주셔서 감사합니다. –