Please enable JavaScript.
Coggle requires JavaScript to display documents.
Спринт 5. Покрытие тестами. - Coggle Diagram
Спринт 5. Покрытие тестами.
Мануальное/ручное тестирование функции
Результаты мануального тестирования можно сохранить в Docstring
Запустите doctest для файла с функцией movie_quotes(): выполните из директории с файлом команду
python -m
DOCTEST
<название файла.py>
Если команда выполнена, но ничего не произошло — значит все работает правильно и результаты теста, сохранённые в докстринге, подтверждены.
Сломайте код (например, добавьте лишний пробел в цитату с Элли) и заново запустите doctest.
В консоли появится сообщение об ошибке:
ВЫВОД
: Быстро протестировать небольшой фрагмент кода и убедиться, что он работает — для этого doctest вполне подходит. Но зачастую такое тестирование неудобно: тесты загромождают код, а вынести в отдельный файл их нельзя.
Это серьёзная проблема: ведь тесты зачастую объёмнее, чем тестируемые функции.
Как правило, doctest применяют для быстрого простого тестирования небольших фрагментов кода
Метод тестирования ASSERT/Утверждение
Логика работы ASSERT
Assert для функции
Ассерты (в отличие от доктестов) не обязательно размещать в тестируемой функции. Ассерты можно компоновать в классы или в функции, выносить в другие файлы и, при необходимости, импортировать и вызывать. В результате код становится чище, с ним проще работать и легче читать.
Логика работы
Assert для классов
Пример класса Contact,
Чтобы протестировать этот класс, проще всего создать его экземпляр и убедиться, что поведение экземпляра соответствует ожиданиям.
Метод тестирования Библиотека UNITEST
Вместо инструкций assert в Unittest применяют методы встроенного класса unittest.TestCase. Тесты помещаются в классы, наследующиеся от unittest.TestCase. Тесты — это методы класса. Имена тестов должны начинаться с префикса test_
Было создано два файла.
file.py с функцией """Конкатенирует все элементы списка, приводя их к строкам."""
test_one.py файл который вызывает функцию из file.py и тестирует ее
при помощи методов из библиотеки UNITEST
Запуск тестов из консоли
переходим в директорию с файлом. выполняем команду python -m unittest -v test
one.py. Будет вызван test runner, который найдёт в файле все методы, начинающиеся с test
и выполнит инструкции в них
Паттерн тестирования AAA (Arrange, Act, Assert)
Большинство тестов можно разделить на три части:
Arrange (настройка)
— в этом блоке кода мы подготавливаем данные для теста. Обычно это создание экземпляра класса тестируемого юнита.
Калькулятор с методами вычислений
Тесты класса Калькулятор паттерном ААА. В каждой функции TEST создается экземпляр объекта калькулятор
Для запуска тестов После запуска тестов командой python
-m unittest -v test_calculator.py
Функции калькулятора дописаны и теперь тесты проходят
Фикстуры/фиксированные объекты
При тестировании класса Calculator в каждом тесте создавался экземпляр этого класса. Такой подход работает приемлемо, но нарушает принцип DRY: Don’t repeat yourself!, «Не повторяйся!». Чтобы упростить код и не повторяться — в Unittest есть встроенные методы фикстур.
1 more item...
Act
— выполнение или вызов тестируемого сценария.
Assert
— проверка того, что тестируемый вызов ведёт себя ожидаемо.