Ich schrieb ein Python-Skript, um alle meine Tests automatisch für mich durchzuführen und einen HTML-Bericht zu generieren. Ich habe neulich discover
für Unittests entdeckt, die es mir erlauben, alle Unittests in einem bestimmten Verzeichnis auszuführen, ohne sie explizit zu benennen, und ich würde meine Doktests auf die gleiche Weise machen wollen, anstatt jedes Modul explizit importieren zu müssen.Wie kann ich doctests mit der Testentdeckung von unittest integrieren?
Ich habe einige Informationen darüber gefunden, wie man das unter https://docs.python.org/2/library/doctest.html macht, habe es aber nicht wirklich verstanden. Könnten Sie mir bitte helfen mit discover
mit meinem Doctests?
Python test discovery with doctests, coverage and parallelism ist verwandt, aber immer noch nicht meine Frage beantworten.
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' gilt als Etalon für Tests in Python heutzutage, also ich Ich würde es empfehlen, es auszuprobieren. Es sieht so aus, als hätte es auch eine gute Unterstützung für Doctests: http://doc.pytest.org/en/latest/doctest.html – yedpodtrzitko