[Python-Dev] Re: [Bug #131480] __test__() should auto-exec at compile time

Jeremy Hylton jeremy@alum.mit.edu
Fri, 9 Feb 2001 18:42:14 -0500 (EST)


I just closed the bug report quoted below with the following response:

    I don't agree that unit tests should run automatically.  Nor do I
    think adding magic to the language to support unit tests is
    necessary when it is trivial to add some external mechanism.

I guess this topic could be opened up for discussion if someone else
disagrees with me.  Regardless, though, it's too late for 2.1.

Jeremy

>>>>> ">" == noreply  <noreply@sourceforge.net> writes:

  >> Bug #131480, was updated on 2001-Feb-07 18:44 Here is a current
  >> snapshot of the bug.

  >> Details: We can make unit testing as simple as writing the test
  >> code!  Everyone agrees that unit tests are worth while.  Python
  >> does a great job removing tedium from the job of the programmer.
  >> Unit test should run automatically.  Here's a method everyone can
  >> agree to:

  >> Have the compiler check each module for a funtion with the
  >> special name '__test__' that takes no arguments.  If it finds it
  >> it calls it.

  >> The problem of unit testing divides esiliy into two pieces: How
  >> to create the code and how to execute the code.  There are many
  >> options in creating the code but I have never seen any nice
  >> solutions to run the code automatically "if __name__ ==
  >> '__main__':"
  >>  doesn't count since you have to do somthing special to call the
  >>  code i.e.
  >> run it as a script.  There are of course ways to run the test
  >> code automatically but the ways I have figured out run it on
  >> every import (way too often especially for long tests).  I
  >> imagine there is a way to check to see if the module is loaded
  >> from a .pyc file and execute test code accouringly but this seems
  >> a bit kludgy.  Here are the benifits of compile time
  >> auto-execution:

  >> - Compatible with every testing framework.
  >> - Called always and only when it needs to be executed.
  >> - So simple even micro projects 'scripts' can take advantage

  >> Disadvantages:
  >> - Another special name, '__test__'
  >> - If there are more please tell me!

  >> I looked around the source-code and think I see the location
  >> where we can do this.  It's would be a piece of cake and the
  >> advantages far outway the disadvantages.  If I get some support
  >> I'd love to incorporate the fix.

  >> Justin Shaw thomas.j.shaw@aero.org