Рубрики
Без рубрики

Python 3 тестирования: введение в междушественную

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: Mike Driscoll.

Неизвестный Модуль на самом деле является структурой тестирования, которая была первоначально вдохновлена Junit. В настоящее время он поддерживает автоматизацию тестов, совместное использование кода установки и выключения, агрегирующие тесты в коллекции и независимость испытаний из структуры отчетности.

Unitestest Frameworks поддерживает следующие концепции:

  • Испытательный прибор – приспособление – это то, что используется для настройки теста, поэтому его можно запускать, а также разрываться, когда тест закончен. Например, вам может потребоваться создать временную базу данных до того, как тест может быть запущен и уничтожить его после завершения тестирования.
  • Тестовый случай – тестовый случай – ваш фактический тест. Обычно он будет проверять (или утверждать), что конкретный ответ поступает из определенного набора входов. Unittest Frameworks предоставляет базовый класс под названием ** Testcase **, который вы можете использовать для создания новых тестовых случаев.
  • Test Suite – Test Suite – это коллекция тестовых чехлов, тестовых люксов или обоих.
  • Тестовый бегун – бегун – это то, что элементы управления или организовывает работу тестов или люксов. Он также предоставит результату пользователям (то есть они проходили или потерпели неудачу). Бегун может использовать графический пользовательский интерфейс или быть простым текстовым интерфейсом.

Простой пример

Я всегда нахожу пример кода или два, чтобы быть самым быстрым способом узнать, как что-то новые работы. Итак, давайте создадим маленький модуль, который мы позвоним MyMath.py Отказ Затем добавьте следующий код в него:

Этот модуль определяет четыре математических функция: добавить, вычесть, умножить и разделить. Они не делают никакой проверки ошибок, и они на самом деле не делают точно, что вы можете ожидать. Например, если вы должны были позвонить в Добавить Функция с двумя строками, это счастливо объединяет их вместе и вернуть их. Но для целей иллюстрации этот модуль сделает для создания тестового случая. Так что давайте на самом деле напишите тестовый случай для функции Добавить! Мы назовем этот скрипт test_mymath.py . и сохранить его в той же папке, которая содержит MyMath.py Отказ

Давайте найдя момент и перейдем, как работает этот код. Сначала мы импортируем нашу модуль MyMath и Python’s Неизвестный модуль. Затем мы подкласс Testcase И добавьте три теста, которые переводятся на три метода. Первая функция проверяет добавление двух целых чисел; Вторая функция проверяет добавление двух чисел плавающих точек; И последняя функция объединяет две строки вместе. Наконец мы называем Unittest’s Главная метод в конце.

Вы отметите, что каждый метод начинается с букв «Test». Это на самом деле важно! Он рассказывает тестовый бегун, методы, которые являются тестами, которые он должен работать. Каждый тест должен иметь хотя бы одно утверждение, которое проверит, что результат, как мы ожидали. Неизвестный модуль поддерживает множество различных видов утверждений. Вы можете проверить исключения для булевых условий, а также для многих других условий.

Давайте попробуем проработать тест. Откройте терминал и перейдите к папке, которая содержит ваш модуль MyMath и ваш тестовый модуль:

Это будет выполнять наш тест, и мы должны получить следующий вывод:

Отметим, что есть три периода. Каждый период представляет собой тест, который прошел. Затем он говорит нам, что он бежал 3 теста, время, которое он взял и результат: ОК. Это говорит нам, что все испытания прошли успешно.

Вы можете сделать вывод немного более многословным, передавая в -V Флаг:

Это приведет к напечатанию следующего выхода на STDOUT:

Как видите, это показывает нам, какие тесты были проведены и результаты каждого теста. Это также приводит нас к нашему следующему разделу, где мы узнаем о некоторых командах, которые мы можем использовать с Unittest на командной строке.

Интерфейс командной строки

Unittest Module поставляется с несколькими другими командами, которые вы можете найти полезными. Чтобы узнать, что они есть, вы можете запустить неtiettest модуль напрямую и пропустите его -h Как показано ниже:

Это приведет к напечатанию следующего выхода на STDOUT. Обратите внимание, что я вырезал часть вывода, который покрыл Испытание открытия Варианты командной строки для краткости:

Теперь у нас есть некоторые идеи о том, как мы могли бы назвать наш тестовый код, если бы у него не было звонка Unittest.main () внизу. На самом деле, продолжайте и снова сохраните этот код с другим именем, например test_mymath2.py С последними двумя линиями удалены. Затем запустите следующую команду:

Это должно привести к тому же выводу, которое мы получили ранее:

Прохладная вещь об использовании Unittest Module в командной строке состоит в том, что мы можем использовать его для вызова специфичных функций в нашем тесте. Вот пример:

Эта команда будет запустить только тест запуска, поэтому вывод этой команды должен выглядеть так:

В качестве альтернативы, если у вас были несколько тестовых случаев в этом тестовом модуле, то вы можете назвать только один тестовый случай одновременно, как это:

Все это делает наш Testaddd Подкласс и управляет всеми методами испытаний в нем. Таким образом, результат должен быть таким же, как если бы мы провели в первом примере:

Точка этого упражнения заключается в том, что если у вас есть дополнительные тестовые случаи в этом тестовом модуле, то этот метод дает вам способ выполнения индивидуальных тестовых случаев вместо всех них.

Создание более сложного теста

Большинство кода намного сложнее, чем наши MyMath.py пример. Итак, давайте создадим кусок кода, который зависит от существования базы данных. Мы создадим простой скрипт, который может создать базу данных с некоторыми исходными данными, если она не существует вместе с несколькими функциями, которые позволят нам запросить его, удалять и обновлять строки. Мы назовем этот скрипт Simple_db.py Отказ Это довольно длительный пример, поэтому медведь со мной:

Вы можете немного играть с этим кодом, чтобы увидеть, как это работает. Как только вам комфортно с этим, то мы можем двигаться дальше, чтобы проверить его.

Теперь некоторые могут утверждать, что создание базы данных и уничтожение его для каждого теста довольно большой накладной. И у них может быть хорошая точка зрения. Однако для проверки определенной функциональности вам иногда нужно делать такую ​​вещь. Кроме того, вам обычно не нужно создавать всю производственную базу данных только для проверки здравоохранения.

В любом случае, это еще раз для иллюстративных целей. Unittest Module позволяет нам переопределить Настройка и Обзор методы