Python/Справочник по библиотеке Python 2.6: различия между версиями
Содержимое удалено Содержимое добавлено
Tatyr (обсуждение | вклад) |
Tatyr (обсуждение | вклад) |
||
Строка 447:
''Появилось в версии 2.3.''
====
Каждый экземпляр '''TestCase''' представляет единственный тест
Экземпляры '''TestCase''' включают в себя три группы методов: первая используется для запуска теста, вторая используется в реализации теста для проверки условий и сообщении о провалах, и оставшиеся справочные методы позволяют собрать информацию о самом тесте.
В первую группу (выполнения тестов) входят следующие методы:
;'''TestCase.setUp()''':
Метод вызываемый для подготовки тестового окружения. Он вызывается непосредственно перед вызовом тестового метода. Любые исключения поднятые методом обрабатываются как ошибки, а не как провалы. Реализация по умолчанию не делает ничего.
;'''TestCase.tearDown()
Метод вызываемый сразу после выполнения и записи результата теста. Метод вызывается даже в том случае, если тестовый метод поднял исключение, поэтому при реализации метода в подклассах требуется быть особенно внимательными при проверке внутреннего состояния. Любые исключения поднятые методом обрабатываются как ошибки, а не как провалы. Метод вызывается только в том случае, если метод '''setUp()''' был успешно выполнен, вне зависимости от результатов тестового метода. Реализация метода по умолчанию не выполняет ничего.
;'''TestCase.run([''result''])''':
Выполняет тест, сохраняет результат в объекте результата теста, переданного в качестве ''result''. Если ''result'' не передан, либо '''None''', создается и используется временный объект результата (вызовом метода '''defaultTestCase())''', такой объект результата не возвращается методом.<br />
Аналогичный результат можно получить простым вызовом экземпляра '''TestCase'''.
;'''TestCase.debug()''':
Выполняет тест без сбора результата. Это позволяет исключениям поднятым тестом добраться до вызвавшего объекта и может использоваться для выполнения тестов в отладчике (debugger).
Для проверки и сообщения о провалах, в тестовом коде могут использоваться любые из перечисленных ниже методов:
'''TestCase.assert_(''expr''[, ''msg''])'''<br />
'''TestCase.failUnless(''expr''[, ''msg''])'''<br />
'''TestCase.
Сообщает о провале теста если выражение ''expr'' ложно с объяснением ошибки ''msg'', если задано, либо '''None'''.
'''TestCase.assertEqual(''first'', ''second''[, ''msg''])
'''TestCase.failUnlessEqual(''first'', ''second''[, ''msg''])
Проверяет идентичность объектов ''first'' и ''second''. Если значения не идентичны, тест проваливается с объяснением ''msg'', либо '''None'''.
(На самом деле в 2.6.4 справедливо и для '''assertEqual''', скорее всего описание из старых версий)
'''TestCase.assertNotEqual(''first'', ''second''[, ''msg''])'''<br />
'''TestCase.
Проверяет
Обратите внимание, что использование '''failIfEqual()''' имеет то преимущество, что метод выполняет сравнение, передавая выражение в качестве первого параметра в '''failUnless()''', что позволяет автоматически сформировать значение по умолчанию для msg отображающее одновременно ''first'' и ''second''.
(На самом деле в 2.6.4 справедливо и для '''assertNotEqual''', скорее всего описание из старых версий)
'''TestCase.assertAlmostEqual(''first'', ''second''[, ''places''[, ''msg'']])'''<br />
'''TestCase.failUnlessAlmostEqual(''first'', ''second''[, ''places''[, ''msg'']])'''
Проверяет примерное равенство объектов ''first'' и ''second'' вычисляя разницу между значениями, округляя до заданного числа десятичных знаков (по умолчанию 7) и сравнивая с нулем.
Обратите внимание, что сравнение заданного числа десятичных знаков это не то же самое, что сравнение заданного числа значащих цифр. Если значения не признаются равными, тест проваливается с объяснением ''msg'', либо '''None'''.
'''TestCase.assertNotAlmostEqual(''first'', ''second''[, ''places''[, ''msg'']])'''<br />
'''TestCase.failIfAlmostEqual(''first'', ''second''[, ''places''[, ''msg'']])'''
Проверяет примерное неравенство ''first'' и ''second'' вычисляя разницу между значениями, округляя до заданного числа десятичных знаков (по умолчанию 7) и сравнивая с нулем.
Обратите внимание, что сравнение заданного числа десятичных знаков это не то же самое, что сравнение заданного числа значащих цифр. Если значения признаются равными, тест проваливается с объяснением ''msg'', либо '''None'''.
'''TestCase.assertRaises(''exception'', ''callable'', …)'''<br />
'''TestCase.failUnlessRaises(''exception'', ''callable'', …)'''
Проверяет поднятие исключения при вызове объекта ''callable'' с любыми позиционными либо ключевыми аргументами, также переданными в '''assertRaises()'''. Тест проходит если поднимается ''exception'', проваливается если никаких исключений не поднимается, возвращается ошибка, если поднимается исключение отличное от заданного. Для перехвата одного из нескольких типов исключений, в качестве ''exception'' может передаваться кортеж с перечисленными классами исключений.
'''TestCase.failIf(''expr''[, ''msg''])<br />
'''TestCase.assertFalse(''expr''[, ''msg''])'''
Метод '''failIf()''' является инверсией метода '''failUnless()'''. Сигнализирует о провале теста если выражение ''expr'' истинно с сообщением об ошибке ''msg'' либо '''None'''.
'''TestCase.fail([''msg''])'''
Безусловно сообщает о провале теста с сообщением ''msg'' либо '''None'''.
'''TestCase.failureException'''
Этот атрибут класса отдает исключение поднимаемое методом '''test()'''. Если тестовому каркасу требуется использовать специальное исключение, возможно для передачи дополнительной информации, ему требуется создать подкласс данного исключения для «честной игры» с каркасом. Начальное значение атрибута — '''AssertionError'''.
Для сбора информации о тесте тестовый каркас может следующие методы:
'''TestCase.countTestCases()'''
Возвращает количество тестов представленных данным тестовым объектом. Для экземпляров '''TestCase''' всегда возвращает 1.
'''TestCase.defaultTestResult()'''
Возвращает экземпляр класса результатов теста, который следует использовать для данного класса тестового варианта. (если другие экземпляры класса результатов теста не передавались методу '''run()''').
Для экземпляров '''TestCase''' метод всегда возвращает экземпляр '''TestResult'''; подклассы '''TestCase''' могут при необходимости замещать метод.
'''TestCase.id()'''
Возвращает строку идентификации конкретного тестового варианта. Обычно строка включает полное название тестового метода, включая названия модуля и класса.
'''TestCase.shortDescription()
Возвращает однострочное описание теста, либо '''None''' если описание не задано. Реализация по умолчанию возвращает первую строку описания (docstring) тестового метода, либо '''None''', если описание не задано.
====25.3.6. Объекты TestSuite====
Объекты TestSuite ведут себя в основном похоже на объекты TestCase, за тем исключением, что он на самом деле не реализуют тесты. Вместо этого, они используются для объединения тестов в группы тестов которые требуется запускать вместе. В объектах есть ряд дополнительных методов для добавления тестов в экземпляры TestSuite.
|