Урок за PyUnit: Python Рамка за модулно тестване (с пример)
Какво е Unit Testing?
Единично тестване in Python се прави за идентифициране на грешки в ранния етап на разработка на приложението, когато грешките са по-малко повтарящи се и по-евтини за отстраняване.
Единичният тест е тест на ниво код, проектиран в Python за проверка на малка „единица“ функционалност. Единичният тест е обектно-ориентирана рамка, базирана на тестови приспособления.
Python Техники за модулно тестване
Python Unit Testing основно включва тестване на определен модул без достъп до зависим код. Разработчиците могат да използват техники като мъничета и мокове, за да разделят кода на „единици“ и да изпълнят тестване на ниво единица на отделните части.
- Разработка, управлявана от тестове TDD: Единичното тестване трябва да се извършва заедно с Pythonи за това разработчиците използват метода за разработка, управлявана от тестове. При метода TDD първо проектирате Python Единични тестове и едва след това продължавате да пишете кода, който ще реализира тази функция.
-
Плъзгачи и подигравки: Те са две основни техники, които симулират фалшиви методи, които се тестват. А коляно се използва за попълване на някаква зависимост, необходима за правилното изпълнение на модулния тест. А имитация от друга страна е фалшив обект, който изпълнява тестовете, където поставяме assert.
Намеренията и на двата метода са еднакви за премахване на тестването на всички зависимости на клас или функция.
Python Рамка за модулно тестване
За да улесните процеса на Unit Testing и да подобрите качеството на вашия проект, се препоръчва Python Рамка за модулно тестване. Рамката Unit Testing включва
-
PyUnit: PyUnit поддържа модули, тестови случаи, тестови пакети и тестов инструмент за автоматизирано тестване на кода. В PyUnit можете да организирате тестови случаи в пакети със същите приспособления
-
нос: Вградените плъгини на Nose ви помагат при улавяне на изход, покритие на кода, тестове за документи и т.н. Синтаксисът на Nose е доста по-опростен и намалява бариерите при писане на тестове. Разширява се Python unittest, за да улесните тестването.
- Доктест: Скриптът за тестване на Doctest влиза в docstring с малка функция в долната част на файла. Doctest ви позволява да тествате кода си, като стартирате примери, включени в документацията, и проверите дали са върнали очакваните резултати. Случаят на използване на doctest е по-малко подробен и не улавя специални случаи. Те са полезни като изразителна документация на основния случай на използване на модул и неговите компоненти.
Тестване на единици с PyUnit
Пюнит е а Python пристанище JUnit. Като част от Pyunit, модулът unittest има пет ключови класа.
- Клас TestCase: Класът TestCase носи рутинните тестове и доставя кукички за създаване на всяка рутинна процедура и почистване след това
- Клас TestSuite: Служи като контейнер за събиране и може да притежава множество обекти на тестови случаи и множество обекти на тестови комплекти
- Клас TestLoader: Този клас зарежда тестови случаи и комплекти, дефинирани локално или от външен файл. Той излъчва тестови обекти, които притежават тези пакети и случаи
- Клас TextTestRunner: За провеждане на тестовете се обслужва стандартна платформа за изпълнение на тестовете
- Класът TestResults: Предлага стандартен контейнер за резултатите от теста
Проектиране на тестов случай за Python Тестване с помощта на PyUnit
Единичният тест осигурява базов клас, тестов случай, който може да се използва за създаване на нови тестови случаи. За проектиране на тестов случай има три набора от използвани методи
unittest.TestCase
setUp() teardown() skipTest(aMesg:string) fail(aMesg:string) id():string shortDescription():string
В първия комплект са куките преди и след теста. Методът setup() започва преди всяка тестова рутина, teardown() след рутината.
Вторият набор от методи контролира изпълнението на теста. И двата метода приемат низ от съобщения като вход и отменят текущ тест. Но методът skiptest() прекъсва текущия тест, докато методът fail() го проваля напълно.
Последният или третият метод помагат за определяне на теста. Методът id() връща низ, състоящ се от името на обекта на тестовия случай и на тестовата рутина. И методът е кратъкDescription() връща коментара docstr при започване на всяка тестова рутина.
Предимства на използването Python Тестване на единица
- Помага ви да откривате грешки в началото на цикъла на разработка
- Помага ви да пишете по-добри програми
- Лесно се синхронизира с други методи и инструменти за тестване
- Ще има много по-малко грешки
- По-лесно е да се променя в бъдеще с много по-малко последствия



