qc

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

Rating: 4.0/5 (Total Votes: 2)

КК тестування інструмент, який дозволяє писати властивості, які ви очікуєте справедливі, і нехай комп'ютер генерувати рандомізованих тестів, щоб перевірити, що ці властивості фактично тримати і NBSP ;. Наприклад, якщо ви написали стиснення та розпакування функції для якась програма стиснення даних, очевидно, властивість тесту є те, що стиснення та розпакування рядок повертає вихідну рядок. От як ви могли б висловити, що:
імпорт UnitTest
імпорт КК
клас TestCompression (unittest.TestCase):
І NBSP; @ qc.property
І NBSP; Def test_compress_decompress (само):
І NBSP; "" ". Перевірте, що стиснення та розпакування повертає вихідні дані" ""
І NBSP; дані = qc.str () # довільна рядок. Значення рандомізовані.
І NBSP; self.assertEqual (дані, розпакувати (стиснення (даних)), магнезії (дані))
Це звичайний тест з вбудованим UnitTest рамках Python (який є, чому існує так багато шаблонного). Також ви можете зробити те ж саме з іншою структурою тестування, як мінімально докладний, дуже приємною носа. @ 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; вул (довжина = None, MAXLEN = None) дає рядки, типу вул. Кодування UTF-8. Якщо довжина задано, струни буде точно так довго. Якщо MaxLen дається, довжина рядка буде не більше MAXLEN символів.
- Unicode (довжина = None, MAXLEN = None) дає юнікод рядками, типу Unicode. Якщо довжина задано, струни буде точно так довго. Якщо MaxLen дається, довжина рядка буде не більше MAXLEN символів.
- Ім'я () дає імена, в Unicode. Вони варіюються від прозової, як "John Smith", в екзотичні - іменами, що містять нерозривні пробіли або адреси електронної пошти, або символи Unicode поза Basic Multilingual Plane. Це, якщо завгодно, менш збоченим, ніж назви ви побачите в досить великому наборі даних Інтернету.
- NameUtf8 () є такою ж, як ім'я () кодування ('utf8') ..
- FromList (пункти) повертає випадкові елементи зі списку. Це корисно для створення ваших власних довільних функцій Data Generator.
- Randstr (довжина = None, MaxLen = sys.maxint) дає рядки випадкових байт. Якщо довжина задано, струни буде точно так довго. Якщо MaxLen дається, довжина рядка буде не більше MaxLen байт.
Рядки, отримані вул Юникода рандомізованих, але деякі зусилля були спрямовані на їх виготовлення досить збочений, щоб виявити помилки в цілому багато коду для обробки рядків. Список імен за мотивами страшних спогадів бачачи коду обробки ім'я аварії на реальних даних, знову і знову і знову, як стало все більш ясно, що світ зійшов з розуму, і ми дійсно приречені. (Це почуття проходить, як тільки ви отримаєте досить тестове покриття та речі, нарешті, перестати збоїв. Існує надія!)
Ім'я та Приклад рядка даних в qc.arbitrary може бути цікавий як джерело більш deteministic даних тестових прикладів. Не соромтеся брати нічого з цього. Внутрішні магія, але магічних внутрішніх частин, найцікавіші з них знаходяться в qc.arbitrary та контроль якості

Вимоги :.

  • Python

Схожі програми

Pikzie
Pikzie

14 Apr 15

GAJET
GAJET

2 Jun 15

importchecker
importchecker

15 Apr 15

jstestnetlib
jstestnetlib

20 Feb 15

qc

Коментар не знайдено
додати коментар
Включіть картинки!
Пошук за категоріями