Python

Підручник з Python Unittest

Підручник з Python Unittest

Модульне тестування - це метод тестування, що використовується в програмній інженерії для окремих блоків будь-якого коду. Користувачі можуть проводити індивідуальні тести, щоб визначити стан джерела та наскільки придатний код для використання. Таким чином користувачі можуть перевірити якість коду.

Тестування проводиться після завершення процесу розробки. Користувачі також можуть розпочати тестування, коли тестовий сценарій повинен бути перевірений на основі критеріїв тестування. Розробники повинні написати ручні типи вихідного коду. Як правило, ручне написання кодів модульного тестування є напруженим завданням, але в Python це робиться за допомогою вбудованої функції, яка називається unittest.

Unittest

Тестування в Python проводиться за допомогою unittest framework. Модульне тестування робить код безпечним та простим у використанні і в майбутньому. Користувачі зазвичай не можуть передбачити ці випадки, але можуть легко вирішити їх. Unittest може бути як цілим модулем, певною функцією, так і цілим інтерфейсом (клас / модуль).

Як написати модульні тести для вашого коду?

Щоб написати модульні тести для свого коду, завжди починайте з найменшої одиниці, яку можна перевірити з цілого вашого коду, а потім перейдіть далі до інших одиниць. Таким чином ви перевірите, як найменша вибрана одиниця взаємодіє для побудови цілого одиничного тесту.

Структура модульного тестування Python була сформована з урахуванням Java-Junit. Він має однакові і ті ж функції, як модульне тестування, яке проводиться іншими мовами. Фреймворк модульного тестування в Python допомагає в автоматичному тестуванні, налаштуванні спільного використання, об’єднанні багатьох тестів в один великий набір та незалежних тестах

Приклади:

Тепер, у прикладі, ми перевіряємо код, щоб дізнатись суму в коді Python за допомогою функції sum (). Відповідь на це підсумовування має бути 12, що є вірним.

>>> стверджувати суму ([2, 4, 6]) == 12, "Має дорівнювати 12"

З іншого боку, якщо ми спробуємо записати неправильне вихідне значення, яке сума () є неправильним, результати не зможуть. Він поверне AssertionError. Виведений нами результат є неправильним, тобто 12, а фактичний результат повинен бути 6, отже, він повернув цю помилку.

>>> стверджувати суму ([2, 2, 2]) == 12, "Має дорівнювати 12"

Тепер, замість тестування на REPL, ми додамо новий файл Python і назвемо його тестова_сума.py

>> def testValue_sum ():
затвердити суму ([2, 4, 6]) == 12, "Має дорівнювати 12"
якщо __name__ == "__основна__":
testValue_sum ()
print ("Все передано правильно")

Після написання тестового кейсу ви можете отримати доступ до каталогу, що містить test_sum.py, а потім введіть:

$ python test_sum.py

Вихідні дані:

Вихідне значення, коли воно подібне до відображеного, підтверджує правильне значення.

Давайте створимо ще один файл для .py перевірити суму. Приклад, показаний у коді, і може бути використаний як зразок шляхом копіювання:

def testValue_sum ():
затвердити суму ([2, 4, 6]) == 12, "Має дорівнювати 12"
def testValue_sum_tuple ():
затвердити суму ((1, 1, 1)) == 6, "Має бути рівним 6"
якщо __name__ == "__основна__":
testValue_sum ()
testValue_sum_tuple ()
print ("Все передано правильно")

Цього разу ми знову назвемо файл тестова_сума.py 

Перший блок коду правильний, тоді як другий блок коду є помилковим і має помилку, тому наш вивід поверне те саме.

Тепер ми повернемося до каталогу проекту, де ми зберегли файл .файл py, а потім протестуйте файл, використовуючи таку команду:

$ python test_sum.py

Вихідні дані:

Цього разу, оскільки вхідний код мав помилку, очікується, що він відповість на помилку твердження.

Приклад використання unittest:

Вимоги Unittest полягають у тому, що користувачі можуть поміщати свої тести в класи як різні методи, користувачі можуть використовувати низку методів твердження, а клас TestCase можна використовувати замість твердження assert.

Користувачі можуть перетворити приклад, обговорений у попередній половині, на тест unit unit.

По-перше, імпортуйте бібліотеку unitest. Далі вам потрібно створити TestSum з різних класів.

Створіть новий файл для коду, обговореного нижче:

імпорт unittest
клас TestSum (unittest.TestCase):
def testValue_sum (self):
себе.assertEqual (сума ([2, 4, 6]), 12, "Має дорівнювати 12")
def testValue_sum_tuple (self):
себе.assertEqual (sum ((1, 1, 1)), 6, "Дорівнює 6")
якщо __name__ == '__основна__':
unittest.основний ()

Після виконання цієї команди на виході буде крапка. Це означає успіх, а F означає невдачу.

Отже, ми маємо успіх, а інший - невдача.

Вихідні дані:

Написання першого тесту:

Створіть нову папку проекту, а потім створіть нову папку, ми будемо називати її sum_file. Всередині нього створіть файл і назвіть його __init__.py.  Зробіть папку проекту такою:

проект /

└── файл_суми /
└── __init__.py

Тоді вам потрібно відкрити my_sum / __ init__.py та створити нову функцію sum (). Буде ітеративно (список, кортеж або набір), щоб додати багато значень:

деф сума (аргумент):
total_ValueCalculated = 0
для val in arg:
total_ValueCalculated + = val
повернути total_ValueCalculated

Далі вам потрібно створити файл тест файл. Почніть із написання тестів і створіть файл тесту з назвою testFile.py. Щоб імпортувати додаток, і його потрібно протестувати, розмістіть файл testFile.py над папкою пакунку. Нижче наведено загальний вигляд вашого каталогу:

проект /

├── файл_суми /
│ └── __init__.py
|
└── testFile.py

Як вже обговорювалося раніше, щоб протестувати код, ви можете використовувати таку команду у вікні терміналу / командному рядку:

$ python -m unittest тест

Висновок

У статті розглядається процес модульного тестування в Python. Тестування - одна з корисних особливостей програмної інженерії, яка здатна розділити коди на менші шматки, а потім спробувати їх по одному. Користувачі також можуть зібрати всі тестові зразки / коди одиниць в одну велику колекцію. Unittest - це одна з функцій, яка використовується в Python для полегшення тестування.

Remap your mouse buttons differently for different software with X-Mouse Button Control
Maybe you need a tool that could make your mouse's control change with every application that you use. If this is the case, you can try out an applica...
Microsoft Sculpt Touch Wireless Mouse Review
I recently read about the Microsoft Sculpt Touch wireless mouse and decided to buy it. After using it for a while, I decided to share my experience wi...
AppyMouse On-screen Trackpad and Mouse Pointer for Windows Tablets
Tablet users often miss the mouse pointer, especially when they are habitual to using the laptops. The touchscreen Smartphones and tablets come with m...