Nose has a bug - test names created by generators are not cached, so the error looks like it happened in the last test, not the actual test where it failed. I got around it following the solution in the bug report discussion, but it only works for names shown on stdout, not in the XML report (--with-xunit)
from functools import partial, update_wrapper
def testGenerator():
for i in range(10):
func = partial(test)
# make decorator with_setup() work again
update_wrapper(func, test)
func.description = "nice test name %s" % i
yield func
def test():
pass
The output of nose is as expected, something like
nice test name 0 ... ok
nice test name 1 ... ok
nice test name 2 ... ok
...
But the test names in XML are just 'testGenerator'.
...<testcase classname="example" name="testGenerator" time="0.000" />...
How can I change this so that the personalized test names are shown on both stdout and XML output?
I'm using nosetests version 1.1.2 and Python 2.6.6