Python unittest
フレームワークを使用したテストの一部として、2つの比較的短いテキストファイルを比較する必要があります。1つはテスト出力ファイルで、もう1つは参照ファイルです。 。
直接的なアプローチは次のとおりです。
import filecmp
...
self.assertTrue(filecmp.cmp(tst_path, ref_path, shallow=False))
テストに合格した場合は問題なく機能しますが、失敗した場合でも、出力にはあまり役立ちません。
AssertionError:Falseはtrueではありません
unittest
フレームワークの一部として2つのファイルを比較するより良い方法があるので、不一致の場合にいくつかの有用な出力が生成されますか?
あなたがする必要があるのは、エラー状態のためのあなた自身のメッセージを追加することだけです。 doc
self.assertTrue(filecmp(...), 'You error message')
どの行に違いがあるかのレポートとその行のプリントアウトを取得するには、内容にassertListEqual
を使用します。
self.assertListEqual(
list(io.open(tst_path)),
list(io.open(ref_path)))
2つのファイルの内容を比較した方がいいのではないですか。たとえば、テキストファイルの場合、2つのファイルのテキストを比較すると、より意味のあるエラーメッセージが出力されます。
配列形式のファイルを比較すると、意味のあるアサートエラーが発生します。
assert [row for row in open(actual_path)] == [row for row in open(expected_path)]
ファイルを比較する必要があるたびにそれを使用したり、関数に入れたりすることができます。配列の代わりにテキスト文字列の形式でファイルを配置することもできます。