Code

Opened 5 years ago

Closed 16 months 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 5 years ago.

Download all attachments as: .zip

Change History (7)

Changed 5 years ago by Nate

comment:1 Changed 5 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 5 years ago by SmileyChris

  • Triage Stage changed from Unreviewed to Design decision needed

I like this too, worth bringing up after 1.1

comment:3 Changed 3 years ago by SmileyChris

  • Severity set to Normal
  • Type set to New feature

comment:4 Changed 2 years ago by aaugustin

  • UI/UX unset

Change UI/UX from NULL to False.

comment:5 Changed 2 years ago by aaugustin

  • Easy pickings unset

Change Easy pickings from NULL to False.

comment:6 Changed 16 months ago by aaugustin

  • Resolution set to wontfix
  • Status changed from new to closed

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.

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.