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
[EMAIL PROTECTED]

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to