Opened 7 years ago

Closed 4 years ago

#10973 closed New feature (wontfix)

simpler doctesting

Reported by: pcicman Owned by: nobody
Component: Testing framework Version: 1.0
Severity: Normal Keywords: doctest modules
Cc: Triage Stage: Design decision needed
Has patch: yes Needs documentation: no
Needs tests: yes Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

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:

in tests.py

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.

Attachments (1)

auto_doctest.diff (694 bytes) - added by Nate 7 years ago.

Download all attachments as: .zip

Change History (7)

Changed 7 years ago by Nate

Attachment: auto_doctest.diff added

comment:1 Changed 7 years ago by Nate

Has patch: set
Needs documentation: unset
Needs tests: set
Patch needs improvement: unset

For what it's worth, I agree with this suggestion. I had actually done something similar to automate the doctesting of my own modules. Pcicman, I took the liberty of making a patch out of your code. It could use some tests, though.

comment:2 Changed 7 years ago by Chris Beaven

Triage Stage: UnreviewedDesign decision needed

I like this too, worth bringing up after 1.1

comment:3 Changed 5 years ago by Chris Beaven

Severity: Normal
Type: New feature

comment:4 Changed 5 years ago by Aymeric Augustin

UI/UX: unset

Change UI/UX from NULL to False.

comment:5 Changed 5 years ago by Aymeric Augustin

Easy pickings: unset

Change Easy pickings from NULL to False.

comment:6 Changed 4 years ago by Aymeric Augustin

Resolution: wontfix
Status: newclosed

Time has passed since this ticket was last discussed, and it no longer looks like a good idea. The trend is to remove custom support for doctests, not to extend it. See #18727 for more details.

Note: See TracTickets for help on using tickets.
Back to Top