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; "" ". Test че компресиране и декомпресиране връща първоначалните данни" ""
& Nbsp; данни = qc.str () # произволна поредица. Стойностите са рандомизирани.
& Nbsp; self.assertEqual (данни, декомпресиране (компресирате (данни)), токсично за репродукцията (данни))
Това е един обикновен тест с вграден unittest рамка Пайтън (което е защо има толкова много шаблон). Алтернативно, можете да направите точно същото нещо с различен тестване рамка, като минимално многословно, доста приятна носа. Декоратор The @ qc.property управлява украсена функция няколко пъти, и всеки път, стойностите, върнати от функции като qc.string () са различни. С други думи, QuickCheck е съвместим с почти всеки тест рамка единица там; това не е особено взискателна.
Функциите като qc.str (), qc.int (), и така нататък, генерират произволни стойности от определен тип. В примера по-горе, ние сме твърди, че имотът е в сила за всички струни. Когато стартирате тестовете, QuickCheck ще генерира произволни низове за тестване.
Ще забележите, че казах "рандомизирано", не "случаен". Това е умишлено. Разпределението на стойностите е подобряван да включва интересни стойности, като празни струни, или низове с NUL знака в средата, или низове, съдържащи английски текст. Като цяло, QuickCheck се опитва да даде добър микс от умни трудни ценности и случайността. Това е по същество това, което ще направя, ако трябваше да пиша наистина задълбочени тестове на ръка, с изключение, че не е нужно да го направя. На практика, компютърът има по-малко предубеждения относно това кои са здравомислещи данни, така че често ще намерите грешки, които никога не би се случило, за да можете да пише тестовете за. Той не знае как да подсъзнателно избягват грешки.
Вие не сте ограничени до Вградените функции на произволна стойност. Можете да ги използвате като градивни елементи за генериране на собствения си. Например:
клас Point (обект):
& Nbsp; Def __init __ (самостоятелно, X, Y):
& Nbsp; self.x, self.y = плувка (х), флоат (Y)
Def точка ():
& Nbsp; "" "Get произволна точка." ""
& Nbsp; X = qc.int (-20, 20)
& Nbsp; Y = qc.int (-34, 50)
& Nbsp; върне Point (X, Y)
След това можете да използвате това, за да се генерират стойности произволна точка в имоти. Ето тест носа стил:
@ Qc.property
Def test_triangle_inequality ():
& Nbsp; pt = точка ()
& Nbsp; отстояват ABS (pt.x) + ABS (pt.y)> = math.sqrt (pt.x ** 2 + pt.y ** 2), (pt.x, pt.y)
Когато стартирате това, нещо вълшебно се случва: QuickCheck ще се опита да генерира трудни стойности за Х и Y променливи в класа Point, заедно, така че ще видим точки като (0, 0), (1, 1), ( 0, 1), (385 904, 0), както и напълно произволни такива като (584, -35,809,648). С други думи, а не само изготвянето х и у стойности от поток на случайни числа с някои трудни стойности в него, QuickCheck ще действително се опитват да генерират сложни комбинации от х и у координати.
<Силни> Функции за получаване на произволни данни
- INT (ниско, високо) дава цели числа, между допълнителното границите ниски и високи.
- Дълго (ниско, високо) дава копнее, между допълнителното границите ниски и високи.
- Плувка (ниско, високо) дава плувки, между допълнителното границите ниски и високи. Не безкрайности или Нан стойности.
& Nbsp; ул (дължина = None, maxlen = None) дава струни, на ул тип. Кодирането е UTF-8. Ако е дадена дължина, струните ще са точно толкова дълго. Ако е дадена maxlen, дължината на низ ще бъде най-много maxlen символи.
- Unicode (дължина = None, maxlen = None) дава Unicode стрингове, на вид Unicode. Ако е дадена дължина, струните ще са точно толкова дълго. Ако е дадена maxlen, дължината на низ ще бъде най-много maxlen символи.
- Име () дава имена, в Unicode. Те варират от прозаичното, като "John Smith", до екзотични - имената, съдържащи не-чупене пространства, или имейл адреси, или Unicode знаци извън Basic Многоезичен равнина. Това е, ако не друго, по-малко извратено от имената, които ще видите в достатъчно голям набор от интернет данни.
- NameUtf8 () е същият като име () кодира ("utf8")..
- FromList (точки) връща случайни елементи от списък. Това е най-вече полезен за създаване на собствени произволни функции генератор на данни.
- Randstr (дължина = None, maxlen = sys.maxint) дава нанизи от случайни байта. Ако е дадена дължина, струните ще са точно толкова дълго. Ако е дадена maxlen, дължината на низ ще бъде най-много maxlen байта.
Струни произведени от ул и Unicode са рандомизирани, но някои труд е вложен в което ги прави достатъчно извратен, че да се разкрие грешки в един куп преработка низ код. Поименният е базиран на ужасни спомени от виждайки обработка кодово име катастрофа на реални данни, отново и отново, и отново, тъй като стана все по-ясно, че светът е луд, и наистина сме обречени. (Това усещане преминава, след като получи достатъчно покритие тест и нещата най-накрая спират трясък. Има надежда!)
Име и струнен например данните в qc.arbitrary може да са интересни като източник на повече deteministic данни тест. Чувствайте се свободни да заемат някоя от него. Вътрешните са вълшебни, но на магическите вътрешните части, най-интересните от тях са в qc.arbitrary и QC

<силни> Изисквания :.

  • Python

Подобен софтуер

Ahven
Ahven

15 Apr 15

zope_fixtures
zope_fixtures

20 Feb 15

ContiPerf
ContiPerf

20 Feb 15

codemetre
codemetre

11 May 15

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

Коментари не е намерена
добавите коментар
Включете на изображения!
Търсене по категория