We were coming into Python's unittest module from backgrounds in nunit, where
they use a decorate to identify tests. So I was hoping to avoid the convention
of prepending "test" to the TestClass methods that are to be actually run. I'm
sure this comes up all the time, but I mean not to have to do:
class Test(unittest.TestCase):
def testBlablabla(self):
self.assertEqual(True, True)
But instead:
class Test(unittest.TestCase):
@test
def Blablabla(self):
self.assertEqual(True, True)
This is admittedly a petty thing. I have just about given up trying to
actually deploy a decorator, but I haven't necessarily given up on trying to do
it for the sake of knowing if it's possible.
Superficially, you'd think changing a function's __name__ should do the trick,
but it looks like test discovery happens without looking at the transformed
function. I tried a decorator like this:
def prepend_test(func):
print "running prepend_test"
func.__name__ = "test" + func.__name__
def decorator(*args, **kwargs):
return func(args, kwargs)
return decorator
When running unit tests, I'll see "running prepend_test" show up, but a dir on
the class being tested doesn't show a renamed function. I assume it only works
with instances. Are there any other tricks I could consider?
--
http://mail.python.org/mailman/listinfo/python-list