私は私のために私のすべてのテストを自動的に行うためのpythonスクリプトを書いて、HTMLレポートを生成します。先日unittestsのためにdiscover
を発見しました。特定のディレクトリに明示的に名前を付けずにすべてのunittestを実行できるようになりました。私は実際に各モジュールを明示的にインポートするのではなく、doctestを同じ方法で実行できるようにしたいと思います。doctestとunittestのテストディスカバリを統合するにはどうしたらいいですか?
私はhttps://docs.python.org/2/library/doctest.htmlでこれを行う方法についていくつかの情報を見つけましたが、本当にそれを取得しませんでした。 Doctestsにdiscover
を使用して私を助けてください。
Python test discovery with doctests, coverage and parallelismは関連していますが、まだ私の質問には答えていません。
coverage_module
import coverage
import doctest
import unittest
import os
# import test_module
import my_module
cov = coverage.Coverage()
cov.start()
# running doctest by explicity naming the module
doctest.testmod(my_module)
# running unittests by just specifying the folder to look into
testLoad = unittest.TestLoader()
testSuite = testLoad.discover(start_dir=os.getcwd())
runner = unittest.TextTestRunner()
runner.run(testSuite)
cov.stop()
cov.save()
cov.html_report()
print "tests completed"
test_moduleは
import unittest
import doctest
from my_module import My_Class
class My_Class_Tests(unittest.TestCase):
def setUp(self):
# setup variables
def test_1(self):
# test code
# The bit that should load up the doctests? What's loader, tests, and ignore though?
# Is this in the right place?
def load_tests(loader, tests, ignore):
tests.addTests(doctest.DocTestSuite(module_with_doctests))
return tests
if __name__ == '__main__':
unittest.main()
pytestは最近のPythonテストではエタロンと見なされていますので、私はcoverage_moduleを作成する必要はありません。それをチェックすることをお勧めします。それはdoctestsのための素晴らしいサポートを持っているように見えます:http://doc.pytest.org/ja/latest/doctest.html – yedpodtrzitko