В этой статье мы рассмотрим Python библиотеку Pytest, покажем примеры тестов, и как их вообще запустить, будет очень интересно и полезно.
Также если вас интересует тестирование на Python, то почитайте статью «Unit тесты в Python», тоже очень интересная и полезная статья.
Установка Python библиотеки Pytest:
Установить её крайне просто, делается это как и со всеми остальными Python библиотеками, через PIP, вот что пишите в терминал:
1 | pip install -U pytest |
После чего, вы можете протестировать, для того можно проверить версию Pytest, впишите вот эту команду:
1 | pytest --version |
Он должен выдать версию которая у вас установлена.
Работа с Python библиотекой Pytest:
Тут стоит сказать, что всё что будет дальше, это парк примеров как запустить тесты из документации по Pytest, поэтому всё что тут написано вы найдёте и в официальной документации.
Создание первого теста:
Создадим простую функцию для тестирования всего из четырех строк кода:
1 2 3 4 5 6 7 | # Код файла test_sample.py def func(x): return x + 1 def test_answer(): assert func(3) == 5 |
Вот и все. Теперь вы можете выполнить тестирование функции:
1 | pytest |
Вот что выведет:
После завершения pytest показывает отчет об ошибке, потому что функция func(3) не возвращает 5, а возвращает 4, что сказано и в ошибке.
Запуск нескольких тестов:
pytest запустит все файлы формата test _ *. py или * _test.py в текущем каталоге и его подкаталогах. То есть он следует стандартным правилам обнаружения тестов.
Несколько тестов в одном классе:
После разработки нескольких тестов вы можете сгруппировать их в класс. pytest упрощает создание класса, содержащего более одного теста:
1 2 3 4 5 6 7 8 9 | # Код файла test_class.py class TestClass: def test_one(self): x = "this" assert "h" in x def test_two(self): x = "hello" assert hasattr(x, "check") |
pytest обнаруживает все тесты в соответствии со своими соглашениями об обнаружении тестов в Python, поэтому он находит обе функции с префиксом test_. И нет необходимости создавать подклассы, но убедитесь, что перед вашим классом стоит префикс Test, иначе класс будет пропущен. Мы можем просто запустить библиотеку, передав его имя файла:
1 | pytest -q test_class.py |
Вот что у нас вышло в терминале:
Первый тест прошёл, второй — нет. Вы можете легко увидеть промежуточные значения в результате, чтобы понять причину сбоя.
Группирование тестов по классам может быть полезным по следующим причинам:
- Организация тестирования;
- Совместное использование механизмов для тестов только в этом конкретном классе;
- Применение баллов на уровне класса и их неявное применение ко всем тестам;
При группировании тестов внутри классов следует учитывать, что каждый тест имеет уникальный экземпляр класса. Наличие у каждого теста общего экземпляра одного и того же класса было бы очень пагубно для изоляции тестов и способствовало бы плохим методам тестирования.
Это самое главное что стоит знать о библиотеки Pytest.
Вывод:
В этой статье вы прочитали про Python библиотеку Pytest, где увидели примеры тестов, так как она для тестирования, но только самое основное, если вам нужно больше, то посмотрите документацию.