Unitest用于处理异常的函数

时间:2016-07-18 18:07:54

标签: python unit-testing

如果存在无效字符,我有一个解析xml字符串的函数,etree.parse引发解析错误,我的函数通过解码字符串并对字符串进行编码来处理它。它如何测试处理异常的部分?对于有效数据,它返回无效数据的正常输出。

def get_parse_tree(xml):
   try:
      tree = etree.parse(cStringIO.StringIO(xml))
   except etree.ParseError:
       clean_xml = xml.decode("utf-8", errors="ignore").encode("utf-8")
       tree = etree.parse(cStringIO.StringIO(clean_xml))
   except Exception as e:
       print e
  return tree

2 个答案:

答案 0 :(得分:1)

如果您使用unittestTestCase,则可以使用assertRaises

class TestSuite(TestCase):

    def test_get_parse_tree(self):
        with self.assertRaises(etree.ParseError):
            # Force your error here

答案 1 :(得分:1)

您的单元测试并不一定需要关注错误输入引发的异常(如果有的话)。只需使用输入错误调用该函数,并验证预期的"固定"返回值,或验证是否发生了不可恢复的错误。

self.assertEqual(get_parse_tree("good input"), "good output one")
self.assertEqual(get_parse_tree("bad but recoverable input"), "good output two")
self.assertRaise(Exception, get_parse_tree, "bad, unrecoverable input")