[Tutor] unittest decorators

Albert-Jan Roskam fomcl at yahoo.com
Fri Apr 4 08:58:12 CEST 2014



________________________________
> From: Peter Otten <__peter__ at web.de>
>To: tutor at python.org 
>Sent: Thursday, April 3, 2014 3:13 PM
>Subject: Re: [Tutor] unittest decorators
> 
>
>Albert-Jan Roskam wrote:
>
>> The unittest module has some really handy decorators: @unittest.skip
>> and @unittest.skipIf. I use the former for temporary TODO or FIXME things,
>> but I use the latter for a more permanent thing:
>> @unittest.skipif(sys.version_info()[0] > 2). Yet, in the test summary you
>> just see error, skipped, failed. Is it possible to not count the skipIf
>> tests? 
>
>You mean like this?
>
>$ cat skiptest.py
>import unittest
>import sys
>
>def hide_if(condition):
>    def g(f):
>        return None if condition else f
>    return g
>
>class T(unittest.TestCase):
>    @hide_if(sys.version_info[0] > 2)
>    def test_two(self):
>        pass
>    @hide_if(sys.version_info[0] < 3)
>    def test_three(self):
>        pass
>
>if __name__ == "__main__":
>    unittest.main()
>$ python skiptest.py -v
>test_two (__main__.T) ... ok
>
>----------------------------------------------------------------------
>Ran 1 test in 0.000s
>
>OK
>$ python3 skiptest.py -v
>test_three (__main__.T) ... ok
>
>----------------------------------------------------------------------
>Ran 1 test in 0.000s
>
>OK
>$ 


Wow, yes, this is exactly what I meant! Thank you! Now the "bad/code smell/TODO" skips are separated from the legitimately skipped tests.



>> (other than using if-else inside the test --not really a bad
>> solution either ;-)?
>
>I don't understand that remark.

Ok, that was indeed a bit cryptic, sorry. I meant something like this:

class T(unittest.TestCase): 

    def test_combined(self):
        if(sys.version_info[0] > 2:

            pass 
        else: 

            pass


More information about the Tutor mailing list