zoukankan      html  css  js  c++  java
  • Python学习笔记8-单元测试(1)

     源代码:

    roman_mumeral_map = (('M',1000),
    	('CM',900),
    	('D',500),
    	('CD',400),
    	('C',100),
    	('XC',90),
    	('L',50),
    	('XL',40),
    	('X',10),
    	('IX',9),
    	('V',5),
    	('IV',4),
    	('I',1))
    
    def to_roman(n):
    	''' convert integer to Roman numeral '''
    	if not (0 < n < 4000):
    		raise OutOfRangeError('number out of range (must be less than 4000')
    	result = ''
    	for numeral, integer in roman_mumeral_map:
    		while n >= integer:
    			result += numeral
    			n -= integer
    			#print('subtracting {0} from input, adding {1} to output'.format(integer,numeral))
    
    	return result
    
    class OutOfRangeError(ValueError):
    	pass
    	
    

    单元测试代码:

    import roman1
    import unittest
    
    
    class KnownValue(unittest.TestCase):
    	"""docstring for KnownValue"""
    	known_values = ((1,'I'), (2,'II'), (3,'III'),
    		(3888,'MMMDCCCLXXXVIII'), (3999,'MMMCMXCIX'))
    
    	def test_to_roma_konwn_values(self):
    		''' to_roman should give known result with known input '''
    		for integer, numeral in self.known_values:
    			result = roman1.to_roman(integer)
    			self.assertEqual(numeral,result)
    
    
    class ToRomanBadInput(unittest.TestCase):
    	def test_too_large(self):
    		''' to_romam should fail with large input'''
    		self.assertRaises(roman1.OutOfRangeError,roman1.to_roman,4000)
    
    	def test_zero(self):
    		'''to_roman should fail with 0 iput '''
    		self.assertRaises(roman1.OutOfRangeError,roman1.to_roman,0)
    
    	def test_negative(self):
    		''' to_roman should fail with negtive input '''
    		self.assertRaises(roman1.OutOfRangeError, roman1.to_roman, -1)
    
    
    
    if __name__ == '__main__':
    	unittest.main()
    

    class KnownValue(unittest.TestCase): -- 让该测试用例称为unittest模块下TestCase类的子类。

    TestCase类提供了assertEqual()方法来检查两个值是否相等.

    该模块中的每一个类方法都是一个测试用例,需要继承TestCase类

    对于每一个测试用例,unittest模块会打印出每个测试用例的docstring,并说明该测试用例是失败还是成功。对于每一个失败的测试用例,unittest模块会打印出详细跟踪信息。

  • 相关阅读:
    451. Sort Characters By Frequency
    424. Longest Repeating Character Replacement
    68. Text Justification
    44. Wildcard Matching
    160. Intersection of Two Linked Lists
    24. Swap Nodes in Pairs
    93. 递归实现组合型枚举
    98. 分形之城
    97. 约数之和
    96. 奇怪的汉诺塔
  • 原文地址:https://www.cnblogs.com/summerlong/p/4517561.html
Copyright © 2011-2022 走看看