無効な文字がある場合はxml文字列を解析する関数があります。etree.parseは解析エラーを発生させ、関数は文字列をデコードして文字列をエンコードすることによって処理します。例外を処理する部分をどのようにテストしますか?有効なデータの場合と同様に、無効なデータの通常の出力を返します。例外を処理する関数のUnitest
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
例外を発生させるためにetree.parseをモックアウトしますか?最後のケース( 'Exception'では*' ParseError'ではない*)では、あなたの関数は動作しません。 – jonrsharpe
例外を印刷するだけで処理する "ふりをする"ことはできません。それを(標準出力ではなく標準エラーに)記録するが、すぐに裸の 'raise'文でそれを再発生させる。 – chepner
@chepnerもし私がそれを上げようとしていたら、その例外ハンドラを削除するだけでいいですか? –