[TIP] testing for sysadmins who know bash advice

Kumar McMillan kumar.mcmillan at gmail.com
Wed Jan 23 20:35:33 PST 2008


On Jan 8, 2008 1:15 PM, Noah Gift <noah.gift at gmail.com> wrote:
> I am starting to spread the word about Python to many bash
> programmers, both by writing articles, in the book I am writing that
> is geared toward sysadmins, and finally in person one on one.  Any
> suggestions on how to tackle the challenging problem of explaining
> python and teaching that testing is a good thing?  I find this to be
> reasonably complex, as python is foreign enough, but that last thing I
> want to do is turn someone off from Python forever, by getting to
> heavy handed with testing.  I suppose I like explaining doctest best
> so far, as it is so intuitive, and makes sense to a bash programmer.

[catching up on TIP!]

I've actually been toying with the idea of "shelldocs" -- that is,
testable documentation of shell commands.  I mainly wanted this kind
of thing to make sure that some examples I shipped with a module
worked as advertised.  So I wrote up a discovery-based shelldoc thing
that works much like doctest.  However, the examples I have only do
simple shell commands and I haven't thought it through to the point of
making something as versatile as doctest.  If anyone feels inspired by
this, it can easily be extracted into a module and I would be happy to
collaborate on improvements.  Here are the docs with shell commands:

http://code.google.com/p/wikir/

and here is the "meat" :
http://wikir.googlecode.com/svn/trunk/wikir/tests/shelldoc.py
http://wikir.googlecode.com/svn/trunk/wikir/tests/test_shelldoc.py

currently, I am just using a single nosetests generator to validate
all the shell sessions but this could be expanded into some kind of
nose plugin or whatnot.  so far it looks like:

import wikir, inspect, pydoc
from wikir.tests.shelldoc import find_shell_sessions, validate_session

def test_docs():
    doc = pydoc.splitdoc(inspect.getdoc(wikir))[1]
    for session in find_shell_sessions(doc):
        yield validate_session, session


-Kumar



More information about the testing-in-python mailing list