如果存在无效字符,我有一个解析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
答案 0 :(得分:1)
如果您使用unittest
和TestCase
,则可以使用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")