Django

Code

Ticket #6364 (closed: fixed)

Opened 2 years ago

Last modified 1 week ago

Allow test runner to execute individual doctests

Reported by: david Assigned to: nobody
Milestone: Component: Testing framework
Version: SVN Keywords: testing
Cc: russellm, danfairs, robin, david Triage Stage: Accepted
Has patch: 1 Needs documentation: 1
Needs tests: 0 Patch needs improvement: 1

Description (Last modified by russellm)

For the moment, you can specify a test case or even a single test method in this test case but you can't use more than one doctest file easily and run tests file by file for instance.

The attached patch allow you to run doctests from your tests/ directory one by one:

python manage.py test app.doctest_filename_without_extension

Or all at once:

python manage.py test app

You just need doctests files with ".txt" extension. Comments are welcome.

Update: doctests can already be split across files using __tests__. However, the ability to execute tests on a fine grained level would be useful.

Attachments

patch_django_6364.diff (3.2 kB) - added by david on 01/11/08 14:06:31.

Change History

01/11/08 14:06:31 changed by david

  • attachment patch_django_6364.diff added.

01/11/08 14:07:07 changed by david

  • owner changed from nobody to david.
  • needs_better_patch changed.
  • needs_tests changed.
  • needs_docs changed.

01/12/08 04:41:54 changed by Simon Greenhill <dev@simon.net.nz>

  • needs_docs set to 1.
  • has_patch set to 1.
  • stage changed from Unreviewed to Ready for checkin.

Sounds like a rather good idea. I'll move to RFC and see what core says

01/12/08 05:09:50 changed by david

Thanks Simon, I know there are a lot of improvements to do (better error handling, documentation, etc) but I'd like to know if core is interested in this approach before spending too much time on this.

02/02/08 19:15:49 changed by mtredinnick

  • cc set to russellm.
  • stage changed from Ready for checkin to Design decision needed.

Let's not do this. It introduces "yet another way" to specify tests. Multiple doctests can already be specified via the __tests__ variable, so what we need is a way to identify them. Possibly <app_name>.<test_key> where test_key is the key name in the __tests__ dictionary might be most straightforward here.

Russell probably needs to have some input, too, since I have a recollection he's thought about this in the past.

[Triagers: please use "design decision needed" for these types of tickets, not "ready for checkin", which is for non-controversial, fully complete stuff.]

02/02/08 21:12:06 changed by russellm

  • needs_better_patch set to 1.
  • summary changed from Allow fine grained tests for doctests (allow splitting into many files) to Allow test runner to execute individual doctests.
  • description changed.
  • stage changed from Design decision needed to Accepted.

I'm all in favour of the idea of greater granularity for running doctests. However, as Malcolm rightly points out, doctests already provide a multi-file option through the __tests__ dictionary. The Django test runner should supplement, not replace this approach.

Invoking parts of a __tests__ dictionary would certainly be a valuable contribution, but it doesn't completely solve the problem. Doctests can be defined inline on a method or class (the classic sense of a doctest); it would be nice to be able to invoke these individual tests, too.

I'll mark this as accepted, but for the concept, not the provided implementation. I've updated the ticket to better reflect the accepted idea.

02/04/08 06:20:11 changed by david

Ok, I'll try to do something with __tests__, thanks for your suggestions. Inline doctests looks a bit trickier at first sight.

09/10/08 00:21:47 changed by adrian

  • component changed from Tools to Testing framework.

09/21/08 02:54:50 changed by russellm

  • owner changed from david to nobody.

Reverting to nobody since no progress has been made for a while.

09/30/09 05:22:11 changed by danfairs

  • cc changed from russellm to russellm, danfairs.

12/09/09 00:22:23 changed by robin

  • cc changed from russellm, danfairs to russellm, danfairs, robin.

01/18/10 14:22:36 changed by david

  • cc changed from russellm, danfairs, robin to russellm, danfairs, robin, david.

Since [12255], I think this issue should be fixed by a snippet and is not anymore required as a trunk addition. As I understand it, it's now as easy as overriding DjangoTestSuiteRunner?.build_suite with a call to doctests or whatever.

01/18/10 18:14:55 changed by russellm

@david - no this is still a trunk problem. The new class-based structure will make this easier to do as a snippet while you wait for a final patch to hit trunk, but that doesn't remove the need for a solution in trunk.

02/01/10 07:00:00 changed by russellm

  • status changed from new to closed.
  • resolution set to fixed.

(In [12364]) Fixed #6364 -- Added the ability to run individual doctests.


Add/Change #6364 (Allow test runner to execute individual doctests)




Change Properties
Action