[TIP] Functions for tests instead of classes
Mark Sienkiewicz
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
> testing.
>
> 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
> yourself.
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) :
return assertEqual(a,b)
This keeps all the capabilities that are in the current implementation,
but your[1] test functions get to the friendly assertions for free.
Mark S.
[1] Ok, not _your_ test functions -- _my_ test functions. :)
More information about the testing-in-python
mailing list