qc

Скриншот программы:
qc
Детали программы:
Версия: 0.1
Дата загрузки: 14 Apr 15
Разработчик: Peter Scott
Тип распространения: Бесплатная
Популярность: 23

Rating: 4.0/5 (Total Votes: 2)

КК тестирование инструмент, который позволяет писать свойства, которые вы ожидаете справедливы, и пусть компьютер генерировать рандомизированных тестовых проверить, что эти свойства на самом деле держать и NBSP;. Например, если вы написали сжатия и распаковки функции для некоторые программы сжатия данных, очевидно, свойство теста является то, что сжатия и распаковки строку возвращает исходную строку. Вот как вы могли бы выразить, что:
импорт UnitTest
импорт QC
класс TestCompression (unittest.TestCase):
& NBSP; @ qc.property
& NBSP; Def test_compress_decompress (само):
& NBSP; "" ". Проверьте, что сжатия и распаковки возвращает исходные данные" ""
& NBSP; данные = qc.str () # Произвольная строка. Значения рандомизированы.
& NBSP; self.assertEqual (данные, распаковать (сжать (данные)), магнезии (данные))
Это обычный тест со встроенным UnitTest рамках Пайтона (который является, почему существует так много шаблонного). Кроме того, вы могли бы сделать ту же самую вещь с другой рамках тестирования, как минимально подробный, достаточно приятной носа. Символ @ qc.property декоратор работает декорированная функция несколько раз, и каждый раз значения, возвращаемые функциями, как qc.string () различны. Другими словами, QuickCheck совместим с почти каждый рамках модульного тестирования там; это не особенно требовательны.
Такие функции, как qc.str (), qc.int (), и так далее, генерировать произвольные значения определенного типа. В приведенном выше примере, мы утверждая, что свойство справедливо для всех строк. При выполнении тестов, QuickCheck будет генерировать рандомизированных строки для тестирования.
Вы заметите, что я сказал "рандомизированное", а не "случайный". Это не случайно. Распределение значений оптимальной включить интересные значения, как пустые строки или строки с NUL символов в середине, или строки, содержащие текст на английском языке. В общем, QuickCheck пытается дать хорошее сочетание умных сложных значений и случайности. Это, по существу, что вы могли бы сделать, если бы вам пришлось написать действительно тщательные тестовые вручную, кроме того, что вы не должны делать это. На практике, компьютер имеет меньше предубеждения о том, что представляет собой здравомыслящих данные, поэтому он будет часто находить ошибки, которые никогда бы не произошли с вами, чтобы писать тесты для. Он не знает, как подсознательно избежать ошибок.
Вы не ограничены в встроенных функций произвольных значений. Вы можете использовать их в качестве строительных блоков для создания ваших собственных. Например:
класс Point (объект):
& NBSP; Def __init __ (сам, х, у):
& NBSP; self.x, self.y = поплавок (х), поплавок (у)
Точка четкости ():
& NBSP; "" "Получить произвольную точку." ""
& NBSP; х = qc.int (-20, 20)
& NBSP; у = qc.int (-34, 50)
& NBSP; точка возврата (х, у)
Вы можете использовать это, чтобы произвести произвольные значения точек в свойствах. Вот тест нос стиль:
@ qc.property
Def test_triangle_inequality ():
& NBSP; пт = точка ()
& NBSP; утверждают, ABS (pt.x) + ABS (pt.y)> = Math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
При запуске этого, что-то волшебное происходит: QuickCheck будет пытаться генерировать сложные значения как х и у переменных в классе Пойнт, вместе, так что вы увидите, как точки (0, 0), (1, 1), ( 0, 1), (385904, 0), а также полностью случайные них, как (584, -35809648). Иными словами, а не просто рисунок х и у значения из потока случайных чисел с некоторыми сложных значений в нем, QuickCheck фактически попытаться создать сложные комбинации х и у координат.
Функции для получения произвольных данных
- INT (низкий, высокий) дает Интс, между дополнительными рамках низких и высоких.
- Долго (низкий, высокий) дает лонги, между дополнительными рамках низких и высоких.
- Поплавок (низкий, высокий) дает поплавки, между дополнительными рамках низких и высоких. Нет бесконечности или NaN значения.
& NBSP; ул (длина = нет, MaxLen = None) дает строки, типа ул. Кодирование является UTF-8. Если длина дается, строки будет точно так долго. Если MaxLen дается, длина строки будет наиболее MaxLen символов.
- Unicode (длина = нет, MaxLen = None) дает Юникод, типа Unicode. Если длина дается, строки будет точно так долго. Если MaxLen дается, длина строки будет наиболее MaxLen символов.
- Имя () дает имена, в Unicode. Они варьируются от прозаического, как "Джон Смит", в экзотические - именами, содержащими неразрывные пробелы или адреса электронной почты, или символы Unicode вне Basic Multilingual Plane. Это, если угодно, менее извращенным, чем имена вы увидите в достаточно большой набор данных Интернета.
- NameUtf8 () так же, как имя () кодирования ('utf8')..
- FromList (пункты) возвращает случайные предметы из списка. Это в основном полезно для создания собственных произвольных функций генератора данных.
- Randstr (длина = нет, MaxLen = sys.maxint) дает строк случайных байт. Если длина дается, строки будет точно так долго. Если MaxLen дается, длина строки будет наиболее MaxLen байт.
Строки, полученные ул Unicode и рандомизированных, но некоторые усилия были введены в делая их достаточно извращенной, чтобы выявить ошибки в целом много кода обработки строк. В списке имен по мотивам страшных воспоминаний видя кода обработки имя аварию на реальных данных, снова и снова и снова, как стало все более ясно, что мир сошел с ума, и мы действительно обречены. (Это чувство проходит, как только вы получите достаточное освещение испытаний и вещи, наконец, остановить сбой. Существует надежда!)
Имя и пример строка данных в qc.arbitrary может быть интересен как источник более deteministic данных теста. Не стесняйтесь брать любой из него. Внутренности магия, но магических внутренних частей, наиболее интересные из них находятся в qc.arbitrary и дс

Требования :.

  • Python

Похожие программы

Pulse
Pulse

20 Feb 15

nose-sfd
nose-sfd

14 Apr 15

mockfs
mockfs

11 May 15

Комментарии к qc

Комментарии не найдены
добавить комментарий
Включите картинки!