私のPythonユニットテストを含むディレクトリがあります。各単体テストモジュールの形式はtest _ *。pyです。私はall_test.pyというファイルを作成しようとしています。これは、ご想像のとおり、前述のテストフォームのすべてのファイルを実行して結果を返します。これまでに2つの方法を試しました。どちらも失敗しました。2つの方法を紹介します。実際にこれを正しく行う方法を誰かが知っていることを願っています。
私の最初の勇敢な試みのために、「ファイル内のすべてのテストモジュールをインポートして、このunittest.main()
doodadを呼び出すだけで機能しますよね?」まあ、私は間違っていたことがわかりました。
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
if __name__ == "__main__":
unittest.main()
これは機能しませんでした、私が得た結果は:
$ python all_test.py
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
私の2回目の試行では、まあ、まあ、多分私はこの「テスト」全体をもっと「手動」のやり方でやろうとするでしょう。だから私はそれを以下にしようとしました:
import glob
import unittest
testSuite = unittest.TestSuite()
test_file_strings = glob.glob('test_*.py')
module_strings = [str[0:len(str)-3] for str in test_file_strings]
[__import__(str) for str in module_strings]
suites = [unittest.TestLoader().loadTestsFromName(str) for str in module_strings]
[testSuite.addTest(suite) for suite in suites]
print testSuite
result = unittest.TestResult()
testSuite.run(result)
print result
#Ok, at this point I have a result
#How do I display it as the normal unit test command line output?
if __name__ == "__main__":
unittest.main()
これも機能しませんでしたが、非常に近いようです!
$ python all_test.py
<unittest.TestSuite tests=[<unittest.TestSuite tests=[<unittest.TestSuite tests=[<test_main.TestMain testMethod=test_respondes_to_get>]>]>]>
<unittest.TestResult run=1 errors=0 failures=0>
----------------------------------------------------------------------
Ran 0 tests in 0.000s
OK
なんらかのスイートがあるようで、結果を実行できます。持っているだけとのことで、少しは気になるのではないかrun=1
と思われますがrun=2
、進捗です。しかし、結果をmainに渡し、表示するにはどうすればよいですか?または、このファイルを実行できるように基本的にはどのように機能させるのですか?そうすることで、このディレクトリですべての単体テストを実行できますか?