msg162015 - (view) |
Author: Alessandro Piccione (alex.75) |
Date: 2012-05-31 19:02 |
Steps to reproduce the problem. 1. Create a module (ex. name it "test") 2. Create a file in it (ex. mainTest.py) with a class (ex. MainTest) derived from TestCase. 3. Create a test method in that class, (ex. test_base), prefix it with "test". 4. Create a decorator (ex. clear_args) and use it on the test method 5. Create a test suite with the function "loadTestsFromName" of TestLoader class and make a TestRunner run it (I use a TextTestRunner). suite = unittest.TestLoader().loadTestsFromName('test.mainTest.MainTest.test_base') unittest.TextTestRunner(verbosity=2).run(suite) It is expected that the test is run (it runs without decorator). It gives an error: no such test method in <class 'test.mainTest.MainTest'>: wrapper. "wrapper" is the name of the returned function in the decorator. I'm using Python 2.7.3 on Windows 7 64bit. I search "loadTestsFromName decorator" without results, so I decided to report as new issue. This is my first report, I admit I've not read any guide/instructions. |
|
|
msg162017 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2012-05-31 19:58 |
I don't think this is documented anywhere (and should be). I believe what you need to do is use functools.wraps on your wrapper function. |
|
|
msg162032 - (view) |
Author: Michael Foord (michael.foord) *  |
Date: 2012-05-31 23:36 |
Whilst functools.wraps would fix the problem it still sounds like a bug (or at the very least a reasonable feature request). |
|
|
msg162176 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2012-06-02 21:06 |
Here's a patch. |
|
|
msg162563 - (view) |
Author: Michael Foord (michael.foord) *  |
Date: 2012-06-09 14:56 |
Patch looks great - thanks David. |
|
|
msg186558 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2013-04-11 12:58 |
New changeset b17bcfadd7f3 by R David Murray in branch '3.3': #14971: Use class method name, not function.__name__, during unittest discovery. http://hg.python.org/cpython/rev/b17bcfadd7f3 New changeset 659c89275be2 by R David Murray in branch 'default': Merge #14971: Use class method name, not function.__name__, during unittest discovery. http://hg.python.org/cpython/rev/659c89275be2 |
|
|
msg186559 - (view) |
Author: R. David Murray (r.david.murray) *  |
Date: 2013-04-11 13:00 |
Fixed in Python3. The 2.7 unittest code is different enough that it is not immediately obvious how to make the equivalent fix (given that it has been a while since I looked at this logic). If someone wants to work out the equivalent 2.7 patch, I will apply it. |
|
|
msg195714 - (view) |
Author: PCManticore (Claudiu.Popa) *  |
Date: 2013-08-20 20:17 |
The patch for Python 2.7 is pretty similar with the one provided for Python 3. |
|
|
msg195758 - (view) |
Author: Michael Foord (michael.foord) *  |
Date: 2013-08-21 09:31 |
Cool, thanks! |
|
|
msg197219 - (view) |
Author: Roundup Robot (python-dev)  |
Date: 2013-09-08 03:34 |
New changeset 78a5de507f19 by Michael Foord in branch '2.7': Closes issue 14971. http://hg.python.org/cpython/rev/78a5de507f19 |
|
|