[Python-Dev] Proposed unittest changes
Michael Foord
fuzzyman at voidspace.org.uk
Fri Apr 25 11:36:14 CEST 2008
Neal Norwitz wrote:
> [Michael working on cleaning up the unittest module]
>
> it seems like most of the good ideas have been captured already. I'll
> through two more (low priority) ideas out there.
>
> 1) Randomized test runner/option that runs tests in a random order
> (like regrtest.py -r, but for methods)
>
Should be easy enough.
> 2) decorator to verify a test method is supposed to fail
>
> #2 is useful for getting test cases into the code sooner rather than
> later. I'm pretty sure I have a patch that implements this
> (http://bugs.python.org/issue1399935). It didn't fit in well with the
> old unittest structure, but seems closer to the direction you are
> headed.
>
We normally just prefix the test name with 'DONT' so that it isn't
actually run...
> One other idea that probably ought not be done just yet: add a way of
> failing with the test continuing. We use this at work (not in Python
> though) and when used appropriately, it works quite well. It provides
> more information about the failure. It looks something like this:
>
> def testMethod(self):
> # setup
> self.assertTrue(precondition)
> self.expectTrue(value)
> self.expectEqual(expected_result, other_value)
>
> All the expect methods duplicate the assert methods. Asserts can the
> test to fail immediately, expects don't fail immediately allowing the
> test to continue. All the expect failures are collected and printed
> at the end of the method run. I was a little skeptical about assert
> vs expect at first, but it has proven useful in the long run. As I
> said, I don't think this should be done now, maybe later.
>
> n
>
I like this pattern.
Michael Foord
More information about the Python-Dev
mailing list