現在、unittestの学習をしています。テストを行うプログラムは以下の通りです。
class Test(unittest.TestCase): # Test1を使ったテストケース def TestCase1(self): sys.argv.append("入力データのpath") expected = main() with open("正解データのpath") as f: answerData = json.load(f) self.assertEqual(expected, answerData) del sys.argv[1] # Test2を使ったテストケース def TestCase2(self): sys.argv.append("入力データのpath") expected = main() with open("正解データのpath") as f: answerData = json.load(f) self.assertEqual(expected, answerData) del sys.argv[1] # Test3を使ったテストケース def TestCase3(self): sys.argv.append("入力データのpath") expected = main() with open("正解データのpath") as f: answerData = json.load(f) self.assertEqual(expected, answerData) del sys.argv[1] if __name__ == "__main__": unittest.main()
上記プログラムを実行したところ、以下のようなwarningが出てしまいます。
/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/site-packages/pyocr/tesseract.py:364: ResourceWarning: unclosed file <_io.BufferedReader name=4>
configs=builder.tesseract_configs)
ResourceWarning: Enable tracemalloc to get the object allocation traceback
unittest.main(warnings='ignore')
とすれば出力されなくなるのですが、根本の解決にはなってないと感じました。そこで色々しれべてみたのですが、私はテストコードを書くのが初めてで理由を見つけることができませんでした。
上記warningについての対処方法について教えていただきたいです。
よろしくお願いします。
追記
yymmt様の回答を参考にソースコードをみたところ、closeされていない箇所があったため以下の画像のようにコードを付け足しました。
tesseract.py のrun_tesseract関数
ただ、開発をする上でパッケージのソースコードを勝手に書き換えるとコンフリクトを起こすとあったのですが、ソースコード外でクローズすることは可能でしょうか?
わかりづらい文章となってしまい申し訳ありません。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/01 03:25
2020/07/01 04:14 編集
2020/07/01 03:57
2020/07/01 05:26