[TIP] Functions for tests instead of classes
sienkiew at stsci.edu
Thu Mar 4 11:31:19 PST 2010
Michael Foord wrote:
> Hello all,
> Some of you are *really* keen to use functions instead of classes for
> Attached is an example of one way of doing that using unittest2 and
> the load_tests protocol.
Perhaps you could make this an intrinsic capability of unittest2, much
like nose and py.test recognize test functions natively. If I
understand it correctly, the whole point of unittest2 is to implement
the operation "run all the tests in this file", so natively recognizing
test functions would be a nice idea.
( b.t.w. I like that nose and py.test recognize test functions, but I
don't want their integrated test discovery. I think it is an
_excellent_ design choice to separate discover (which finds files that
contain tests) from unittest2 (which runs the tests in a file). )
> At the moment there are no assert functions (I may expand simpletest
> to include these at some point) so you can use assert statements, with
> the cost of the useful failure messages unless you construct them
It never made sense to me that the assert functions in unittest are
attached to the TestCase object. You could have a more generally usable
interface to the module if they were all free standing functions.
Then, to retain compatibility with older versions of unittest, the
TestCase object can contain a bunch of trivial methods like:
def assertEqual(self, a, b) :
This keeps all the capabilities that are in the current implementation,
but your test functions get to the friendly assertions for free.
 Ok, not _your_ test functions -- _my_ test functions. :)
More information about the testing-in-python