Python/Справочник по библиотеке Python 2.6: различия между версиями

Содержимое удалено Содержимое добавлено
Строка 447:
''Появилось в версии 2.3.''
 
====25.3.5. Объекты TestCase¶ ====
Каждый экземпляр '''TestCase''' представляет единственный тест a single test, но в каждом отдельном подклассе может задаваться несколько тестов, но с единымобщим тестовым окружением. Окружение создается и обнуляетсясбрасывается для каждого тестового варианта.
 
Экземпляры TestCase включают в себя три группы методов: первая используется для запуска теста, вторая используется в реализации теста для проверки условий и сообщении о провалах, и оставшиеся справочные методы позволяют собрать информацию о самом тесте.
Экземпляры '''TestCase''' включают в себя три группы методов: первая используется для запуска теста, вторая используется в реализации теста для проверки условий и сообщении о провалах, и оставшиеся справочные методы позволяют собрать информацию о самом тесте.
 
В первую группу (выполнения тестов) входят следующие методы:
 
TestCase.setUp()¶
;'''TestCase.setUp()''':
Метод вызываемый для подготовки тестового окружения. Он вызывается непосредственно перед вызовом тестового метода. Любые исключения поднятые методом обрабатываются как ошибки, а не как провалы. Реализация по умолчанию не делает ничего.
;'''TestCase.tearDown()''':
Метод вызываемый сразу после выполнения и записи результата теста. Метод вызывается даже в том случае, если тестовый метод поднял исключение, поэтому при реализации метода в подклассах требуется быть особенно внимательными при проверке внутреннего состояния. Любые исключения поднятые методом обрабатываются как ошибки, а не как провалы. Метод вызывается только в том случае, если метод '''setUp()''' был успешно выполнен, вне зависимости от результатов тестового метода. Реализация метода по умолчанию не выполняет ничего.
 
;'''TestCase.run([''result''])''':
Метод вызываемый сразу после выполнения и записи результата теста. Метод вызывается даже в том случае, если тестовый метод поднял исключение, поэтому при реализации метода в подклассах требуется быть особенно внимательными при проверке внутреннего состояния. Любые исключения поднятые методом обрабатываются как ошибки, а не как провалы. Метод вызывается только в том случае, если метод setUp() был успешно выполнен, вне зависимости от результатов тестового метода. Реализация метода по умолчанию не выполняет ничего.
Выполняет тест, сохраняет результат в объекте результата теста, переданного в качестве ''result''. Если ''result'' не передан, либо '''None''', создается и используется временный объект результата (вызовом метода '''defaultTestCase())''', такой объект результата не возвращается методом.<br />
Аналогичный результат можно получить простым вызовом экземпляра '''TestCase'''.
;'''TestCase.debug()''':
Выполняет тест без сбора результата. Это позволяет исключениям поднятым тестом добраться до вызвавшего объекта и может использоваться для выполнения тестов в отладчике (debugger).
 
Для проверки и сообщения о провалах, в тестовом коде могут использоваться любые из перечисленных ниже методов:
TestCase.run([result])¶
Выполняет тест, сохраняет результат в объекте результата теста, переданного в качестве result. Если result не передан, либо None, создается и используется временный объект результата (вызовом метода defaultTestCase()), такой объект результата не возвращается методом.
Аналогичный результат можно получить простым вызовом экземпляра TestCase.
TestCase.debug()¶
 
'''TestCase.assert_(''expr''[, ''msg''])'''<br />
Выполняет тест без сбора результата. Это позволяет исключениям поднятым тестом добраться до вызвавшего объекта и может использоваться для выполнения тестов в отладчике (debugger).
'''TestCase.failUnless(''expr''[, ''msg''])'''<br />
The test code can use any of the following methods to check for and report failures.
'''TestCase.assert_assertTrue(''expr''[, ''msg]'')''':
 
TestCase.failUnless(expr[, msg])¶
Сообщает о провале теста если выражение ''expr'' ложно с объяснением ошибки ''msg'', если задано, либо '''None'''.
TestCase.assertTrue(expr[, msg])¶
 
Сообщает о провале теста если expr ложно; объяснение ошибки в msg, если задано, в противном случае объяснение – None.
'''TestCase.assertEqual(''first'', ''second''[, ''msg''])'''<br />
'''TestCase.failUnlessEqual(''first'', ''second''[, ''msg''])'''
 
Проверяет идентичность first и second. Если значения не идентичны, тест проваливается с объяснением msg, либо None. Обратите внимание, что использование failUnlessEqual() имеет то преимущество, что метод выполняет сравнение, передавая выражение в качестве первого параметра в failUnless(): что позволяет автоматически сформировать значение по умолчанию для msg отображающее одновременно first и second.
Проверяет идентичность объектов ''first'' и ''second''. Если значения не идентичны, тест проваливается с объяснением ''msg'', либо '''None'''.
TestCase.assertNotEqual(first, second[, msg])¶
 
TestCase.failIfEqual(first, second[, msg])¶
Проверяет неравенство first и second. Если сравниваемые значения равны, тест проваливается с объяснением msg, либо None. Обратите внимание, что использование failIfEqual'''failUnlessEqual()''' имеет то преимущество, что метод выполняет сравнение, передавая выражение в качестве первого параметра в '''failUnless():''', что позволяет автоматически сформировать значение по умолчанию для ''msg'' отображающее одновременно ''first'' и ''second''.
(На самом деле в 2.6.4 справедливо и для '''assertEqual''', скорее всего описание из старых версий)
TestCase.assertAlmostEqual(first, second[, places[, msg]])¶
 
TestCase.failUnlessAlmostEqual(first, second[, places[, msg]])¶
'''TestCase.assertNotEqual(''first'', ''second''[, ''msg''])'''<br />
Проверяет примерное равенство first и second вычисляя разницу между значениями, округляя до заданного числа десятичных знаков (по умолчанию 7) и сравнивая с нулем. Обратите внимание, что сравнивание заданного числа десятичных знаков это не то же самое, что сравнение заданного числа значащих цифр. Если значения не признаются равными, тест проваливается с объяснением msg, либо None.
'''TestCase.assertNotAlmostEqualfailIfEqual(''first'', ''second''[, places[, ''msg]''])'''
 
TestCase.failIfAlmostEqual(first, second[, places[, msg]])¶
Проверяет примерное неравенство объектов ''first'' и ''second вычисляя разницу между значениями, округляя до заданного числа десятичных знаков (по умолчанию 7) и сравнивая с нулем''. ОбратитеЕсли внимание, что сравнивание заданного числа десятичных знаков это не то же самое, что сравнение заданного числа значащих цифр. Еслисравниваемые значения признаются равнымиравны, тест проваливается с объяснением ''msg'', либо '''None'''.
 
Обратите внимание, что использование '''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.assertRaises(exception, callable, ...)¶
TestCase.failUnlessRaises(exception, callable, ...)¶
Проверяет поднятие исключения при вызове callable с любыми позиционными либо ключевыми аргументами, также переданными в assertRaises(). Тест проходит если поднимается exception, проваливается если никаких исключений не поднимается, возвращается ошибка, если поднимается исключение отличное от заданного. Для перехвата одного из нескольких типов исключений, в качестве exception может передаваться кортеж с перечисленными классами исключений.
TestCase.failIf(expr[, msg])¶
TestCase.assertFalse(expr[, msg])¶
Метод failIf() является инверсией метода failUnless(). Сигнализирует о провале теста если expr истинно с сообщением об ошибке msg либо None.
TestCase.fail([msg])¶
Безусловно сообщает о провале теста с сообщением msg либо None.
TestCase.failureException¶
Этот атрибут класса отдает исключение поднимаемое методом test(). Если тестовому каркасу требуется использовать специальное исключение, возможно для передачи дополнительной информации, ему требуется создать подкласс данного исключения для «честной игры» с каркасом. Начальное значение атрибута – AssertionError.
Для сбора информации о тесте тестовый каркас может следующие методы:
TestCase.countTestCases()¶
 
'''TestCase.countTestCases()'''
Возвращает количество тестов представленных данным тестовым объектом. Для экземпляров TestCase всегда возвращает 1.
 
TestCase.defaultTestResult()¶
Возвращает количество тестов представленных данным тестовым объектом. Для экземпляров '''TestCase''' всегда возвращает 1.
 
'''TestCase.defaultTestResult()'''
 
Возвращает экземпляр класса результатов теста, который следует использовать для данного класса тестового варианта. (если другие экземпляры класса результатов теста не передавались методу '''run()''').
 
Для экземпляров '''TestCase''' метод всегда возвращает экземпляр '''TestResult'''; подклассы '''TestCase''' могут при необходимости замещать метод.
 
'''TestCase.id()'''
 
Возвращает экземпляр класса результатов теста который следует использовать для данного класса тестового варианта. (если другие экземпляры класса результатов теста не передавались методу run()).
Для экземпляров TestCase метод всегда возвращает экземпляр TestResult; подклассы TestCase должны при необходимости замещать метод.
TestCase.id()¶
Возвращает строку идентификации конкретного тестового варианта. Обычно строка включает полное название тестового метода, включая названия модуля и класса.
 
'''TestCase.shortDescription()'''
 
Возвращает однострочное описание теста, либо '''None''' если описание не задано. Реализация по умолчанию возвращает первую строку описания (docstring) тестового метода, либо '''None''', если описание не задано.
 
Возвращает однострочное описание теста, либо None если описание не задано. Реализация по умолчанию возвращает первую строку описания (docstring) тестового метода, либо None, если описание не задано.
====25.3.6. Объекты TestSuite====
Объекты TestSuite ведут себя в основном похоже на объекты TestCase, за тем исключением, что он на самом деле не реализуют тесты. Вместо этого, они используются для объединения тестов в группы тестов которые требуется запускать вместе. В объектах есть ряд дополнительных методов для добавления тестов в экземпляры TestSuite.