[LONG] docstring-driven testing
zipher
dreamingforward at gmail.com
Sun Apr 14 00:56:43 EDT 2013
On Saturday, March 6, 1999 12:00:00 AM UTC-8, Tim Peters wrote:
> If you're like me, you've been using Python since '91, and every scheme
> you've come up with for testing basically sucked. Some observations:
>
> + Examples are priceless.
>
> + Examples that don't work are worse than worthless.
>
> + Examples that work eventually turn into examples that don't.
>
> + Docstrings too often don't get written.
>
> + Docstrings that do get written rarely contain those priceless examples.
>
> + The rare written docstrings that do contain priceless examples eventually
> turn into rare docstrings with examples that don't work. I think this one
> may follow from the above ...
>
> + Module unit tests too often don't get written.
>
> + The best Python testing gets done in interactive mode, esp. trying
> endcases that almost never make it into a test suite because they're so
> tedious to code up.
>
> + The endcases that were tested interactively-- but never coded up --also
> fail to work after time.
>
> About a month ago, I tried something new: take those priceless interactive
> testing sessions, paste them into docstrings, and write a module to do all
> the rest by magic (find the examples, execute them, and verify they still
> work exactly as advertised).
>
> Wow -- it turned out to be the only scheme I've ever really liked, and I
> like it a lot! With almost no extra work beyond what I was doing before,
> tests and docstrings get written now, and I'm certain the docstring examples
> are accurate. It's also caught an amazing number of formerly-insidious
> buglets in my modules, from accidental changes in endcase behavior, to hasty
> but inconsistent renamings.
>
> doctest.py is attached, and it's the whole banana. Give it a try, if you
> like. After another month or so of ignoring your groundless complaints,
> I'll upload it to the python.org FTP contrib site. Note that it serves as
> an example of its own use, albeit an artificially strained example.
Doctests are so cool, I think it should be integrated into the interpreter environment with a test() built-in to encourage people documenting their code and Test-Driven-Development. A companion to help().
Oh wait, this thread is 14 years old...
;^)
More information about the Python-list
mailing list