В Python 2.5 (на самом деле Jython) для класса UnitTest TestCase - нет метода SetUpClass, и __init__
на самом деле неприемлемо (без ссылки на себя). Когда я пытаюсь изменить строку документации внутри TestCase:
import os
fileName = os.path.split(__file__)[1]
testCaseName = os.path.splitext(fileName)[0]
setattr(__name__, '__doc__', testCaseName)
Я собираюсь:
setattr(__name__, '__doc__', testCaseName)
TypeError: readonly attribute
Я попытался изменить строку документации, превратив ее в объект (где self.__doc__
доступен для записи).
ОБНОВЛЕНО: но я хочу избежать дополнительного кодирования в подклассе (т.е. наследования функции суперкласса для установки строки документации подкласса), например:
Файл DynamicTestCase.py включает:
class DynamicTestCase(unittest.TestCase):
def setDocstring(self, testCaseDocstring=None):
if not testCaseDocstring:
fileName = os.path.split(__file__)[1]
testCaseDocstring = os.path.splitext(fileName)[0]
setattr(self, '__doc__', testCaseDocstring)
Файл MyTestCase.py включает:
class MyTestCase(DynamicTestCase):
def test_print_docstring(self):
self.setDocstring()
print 'MyTestCase Docstring = ', self.__doc__
Но тем не менее, результат запуска unittest:
MyTestCase Docstring = DynamicTestCase
Когда я ожидал MyTestCase Docstring = MyTestCase