В Nose есть ошибка: имена тестов, созданные генераторами, не кэшируются, поэтому ошибка выглядит так, как будто она произошла в последнем тесте, а не в самом тесте, в котором она не удалась. Мне удалось обойти это, следуя решению в обсуждении отчета об ошибке, но это работает только для имен, отображаемых в стандартном выводе, а не в отчете XML (--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
Выход носа, как и ожидалось, что-то вроде
nice test name 0 ... ok
nice test name 1 ... ok
nice test name 2 ... ok
...
Но имена тестов в XML — это просто «testGenerator».
...<testcase classname="example" name="testGenerator" time="0.000" />...
Как изменить это, чтобы имена персонализированных тестов отображались как в стандартном выводе, так и в формате XML?
Я использую носовые тесты версии 1.1.2 и Python 2.6.6.