|Reported by:||pcicman||Owned by:||nobody|
|Cc:||Triage Stage:||Design decision needed|
|Has patch:||yes||Needs documentation:||no|
|Needs tests:||yes||Patch needs improvement:||no|
First of all, i found doctests very useful in last time, i just think the way how django does executes can be little bit simplified.
(I know i can write my own test runner, and define it in settings)
By default django takes look only to models.py and tests.py, if they exists, but there may be other modules in application which should be tested, but there isn't any 'magic' way how to do it.
The nice thing is - suite can be defined it tests.py, so its possible to add any other modules to suite, e.g:
suite = unittest.TestSuite() for mod in ['crawl.page.utils', __name__]: suite.addTest(doctest.DocTestSuite(mod))
So i'm able to make doctests on other modules also, it just requires few imports and few lines of code.
I think i can be easier, the only one required thing will be to add some stuff to test.simple.build_suite.
There can be by convenience check for existence of some variable, e.g. doctest_modules. If it exists, all the modules founded inside can be added to suite, so:
from some app import foo doctest_modules = ['someapp.utils', foo]
then to build_suite function can be just added
if hasattr(test_module, 'doctest_modules'): for module in test_module.doctest_modules: suite.addTest(doctest.DocTestSuite(module, checker=doctestOutputChecker, runner=DocTestRunner))
And it will do all the magic.
I just personally think this may be helpful, mostly for bigger applications.
It can be also more generalized, maybe test_modules instead of doctest_modules, then just import them in the test framework, check for suite, or doctests, and so on... but i dont think this it is a good idea - to create unitest suites in every module, they should just stay in tests.py.
On other side, i think i will be just nice to have simple possibility to run doctests on other modules, simple variable (list/tuple) can be a solution.