[Python-Dev] Checking in a broken test was: Re: [Python-checkins]r41940 - python/trunk/Lib/test/test_compiler.py
Scott David Daniels
Scott.Daniels at Acm.Org
Mon Jan 9 02:10:59 CET 2006
James Y Knight wrote:
> On Jan 8, 2006, at 1:01 PM, Martin v. Löwis wrote:
>
>> Fred L. Drake, Jr. wrote:
>>
>>> I like the way trial (from twisted) supports this. The test
>>> method is written
>>> normally, in whatever class makes sense. Then the test is marked
>>> with an
>>> attribute to say it isn't expected to pass yet. When the code is
>>> fixed and
>>> the test passes, you get that information in trial's output, and
>>> can unmark
>>> the test. This avoids having to refactor test classes just to
>>> update the
>>> status of a test.
>>>
>> So how is the mark added? I would suggest
>>
>> @xfail
>> def test_foo(self):
>> self.assertEquals(0,1)
>
> def test_foo(self):
> self.assertEquals(0,1)
> test_foo.todo = "Why this test fails description message."
Looks pretty good. Here's some code to critique:
import unittest
class BrokenTest(unittest.TestCase.failureException):
def __repr__(self):
return '%s: %s: %s works now' % (
(self.__class__.__name__,) + self.args)
def known_broken_XXX(reason):
def wrapper(test_method):
def replacement(*args, **kwargs):
try:
test_method(*args, **kwargs)
except unittest.TestCase.failureException:
pass
else:
raise BrokenTest(test_method.__name__, reason)
return replacement
wrapper.todo = reason
return wrapper
So your use looks like:
class SomeTests(unittest.TestCase):
...
@known_broken_XXX('Someday the naive expect this to work')
def test_distinct_ones(self):
self.failIfEqual(1, 1.0)
-- Scott David Daniels
Scott.Daniels at Acm.Org
More information about the Python-Dev
mailing list