Как установить pytest ubuntu

Обновлено: 04.07.2024

Мы в Hexlet считаем, что именно poetry лучше всего подходит на роль "главного инструмента" Python-разработчика. Поэтому все проекты в рамках профессии предполагают использование poetry.

Вам стоит взять poetry на вооружение как можно раньше и приучить себя оформлять каждый эксперимент как poetry-проект, даже если этот проект может показаться маленьким. Так вы быстрее привыкнете использовать профессиональные инструменты и делать это правильным способом — выработаете хорошие привычки!

Установка poetry

Poetry, хоть и написан на Python, не является обычной Python-программой, каковые принято устанавливать с помощью pip install . Во вводном разделе документации к Poetry вы найдёте команды для установки программы в вашу операционную систему.

Если установка прошла успешно, poetry должен стать доступен как отдельная команда в shell:

Как правило, указанные в документации команды, что называется, "просто работают". Но если у вас что-то не получится, напишите в наш Slack — наверняка, кто-то да сталкивался с теми же проблемами и успешно с ними справился!

Предварительная настройка

Если вы запросите перечень настроек poetry сразу после установки, то увидите что-то подобное:

poetry берёт на себя работу с виртуальными окружениями и выполняет он эту работу хорошо. Однако poetry изначально настроен на то, что у вас будет целый "зоопарк" версий Python, поэтому создаёт виртуальные окружения для проектов в не совсем привычном месте — обратите внимание на настройку virtualenvs.path .

В принципе можно использовать и настройки по умолчанию, однако среди разработчиков на Python принято хранить виртуальное окружение для каждого проекта в директории проекта в поддиректории .venv (помните, как вы создавали окружения командой python3 -m venv .venv ?). Стоит и poetry попросить поступать так же:

Теперь каждый poetry-проект будет иметь виртуальное окружение при себе! Это позволит, к примеру, переносить проект с одной машины на другую простым копированием директории.

Первый проект

Настало время создать тот самый "poetry-проект" с помощью команды poetry new ИМЯ .

Прежде, чем продолжить, убедитесь, что в системе, где вы запускете poetry, доступна команда python .

Предположим, что вы ввели команду poetry new first , вот как будет выглядеть результат:

Кроме пакета first , в проекте уже есть пакет tests с первым тестом. Нам пока этот пакет не интересен, но само его наличие должно вас настроить на нужный лад — настоящие проекты всегда имеют тесты!

В файле README.rst вы будете держать описание проекта.

Расширение .rst говорит о том, что это файл формата reStructuredText. Пройдите по ссылке и почитайте о формате — знать о нём полезно, ведь именно в данном формате и документируют код проектов Python!

И, наконец, самый важный файл в poetry-проекте — pyproject.toml . Это файл конфигурации проекта, описывающий всё, что нужно poetry знать, чтобы

  • управлять зависимостями проекта
  • запускать код на исполнение
  • запускать инструменты для разработки
  • собирать дистрибутив и публиковать его на PyPI

Отдельно стоит отметить последний пункт: poetry приучает к тому, чтобы вы всегда думали о проекте так, как будто вы будете его публиковать — любой "уважающий себя" пакет имеет хорошее описание и правильную структуру, ему всегда назначена какая-то версия. Стоит думать о таких вещах, даже если вы не собираетесь публиковать каждый ваш проект в индекс!

Расширение .toml говорит о том, что это файл формата TOML. Почитайте и об этом формате.

Первый взгляд на pyproject.toml

У только что созданного проекта файл конфигурации выглядит примерно так:

Здесь строчки вида [tool.poetry] описывают секции, в секциях же находятся пары "ключ = значение". Важно помнить, что большинство ключей нельзя помещать "не в те" секции. Вы всегда можете посмотреть в документации, какие ключи бывают и каким секциям они принадлежат.

В данный момент нам интересны первые три секции:

  • tool.poetry описывает проект целиком с точки зрения poetry и хранит версию ( version ), описание ( description ), имя, под которым пакет будет публиковаться ( name )
  • tool.poetry.dependencies хранит список зависимостей, требуемых для работы самого кода, их ещё называют "runtime-зависимости". Здесь всегда будет указан сам Python — без него уж точно код не запустить!
  • tool.poetry.dev-dependencies хранит список зависимостей, нужных в процессе разработки проекта, так называемые "dev-зависимости". В примере выше указан pytest — это такой инструмент для автоматизации запуска тестов.

Секция build-system описывает тот факт, что перед нами именно проект, управляемый poetry. Но существуют и другие инструменты для управления проектами, для них секция build-system будет выглядеть иначе.

Инициализация виртуального окружения

Как правило, poetry сам может понять, что окружение пора создать или обновить. Но можно и явно вызвать команду poetry install :

В процессе будут установлены все зависимости — и "runtime" и "dev". Для рассматриваемого проекта это означает, что будет установлен пакет pytest (вместе с его зависимостями), а это значит, что теперь pytest можно запустить:

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

Pytest - тестирование приложений в Python 3

Статьи

Обзор мощной библиотеки для тестирования кода Pytest.

Введение

Вы знали, что тестирование кода приносит множество преимуществ, включая повышение уверенности в его функционировании и уменьшение регрессий? Если нет, то читайте дальше!

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

Python действительно предоставляет встроенные инструменты, такие как unittest, для поддержки тестирования, но он включает в себя написание большого количества шаблонного кода. Он также имеет ограниченную возможность повторного использования компонентов (или приспособлений в PyTest). Поэтому я буду тестировать приложения Python с помощью Pytest вместо других инструментов. Pytest также является самым популярным инструментом среди других альтернатив.

Примечание: В этой статье я буду использовать Python 3.

Почему Pytest?

  • Меньше шаблонности.
  • Установочный код можно использовать повторно с помощью приспособлений.
  • Фильтрация тестов во время выполнения (для одновременного выполнения только определенного набора тестов).
  • Параметризация тестов (предоставление различных входных значений одному и тому же тесту, позволяющее тестировать различные сценарии с использованием одного теста).
  • Архитектура на основе плагинов, обеспечивающая гибкость и более широкое внедрение.
  • Возможность параллельно выполнять тесты.

Установка Pytest

А потом я устанавливаю Pytest:

Это позволит включить команду pytest в нашей установочной среде. Установка завершает наш первый шаг в тестировании приложений Python с помощью Pytest. Давайте перейдем к следующему шагу.

Соглашения об именовании

Как и в любом тестовом фреймворке, в Pytest есть несколько мест, где он автоматически ищет тестовые файлы.

А чтобы выполнить все тесты в нашем каталоге pytest-demo, я запускаю:

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

Или, если я хочу игнорировать каталог (например, виртуальную среду), то я могу использовать:

Настройка кода

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

Тестирование приложений

Теперь, когда у нас есть наш минимальный фрагмент кода, мы можем начать с нашего основного теста. Мы будем делать расчет 2 + 1 = 3. Для этого я определю наш тест как:

Ключевое слово assert сравнивает два значения, которые оно получает, и возвращает True или False на основе их равенства. Мы также можем иметь подробные утверждения, которые могут быть полезны при отладке. Они могут быть записаны как:

Подробные утверждения могут быть полезны для целей отладки.

Наконец, мы можем запустить наш тест с помощью команды:

И вот, у нас есть наш первый успешный тест!

Обзор мощной библиотеки для тестирования кода Pytest.

Точно так же мы можем написать тест и для нашего метода вычитания:

Уровень отладки Pytest

Я могу передать параметр во время выполнения тестов, чтобы увеличить/уменьшить многословность выходных данных, генерируемых Pytest. Доступны следующие варианты:

  • v: увеличивает многословность.
  • q: более тихий вывод.
  • r: сводка тестов.
  • rp: сводка пройденных тестов.
  • rp: сводка неудачных тестов.

Заключение

Это было краткое введение в тестирование приложений Python с помощью Pytest. Если вам понравилась статья напиши об этом в комментариях или почитайте другие похожие статьи на тему Python.

Как установить Python 3.7 в Ubuntu 18.04

Python - один из самых популярных языков программирования в мире. Python с его простым и легким в освоении синтаксисом - отличный выбор для начинающих и опытных разработчиков. Python - довольно универсальный язык программирования. Его можно использовать в качестве языка сценариев для создания игр, разработки веб-сайтов, создания алгоритмов машинного обучения и анализа данных.

Python 3.7 включает множество новых функций, таких как отложенная оценка аннотаций типов, поддержка классов данных и переменных контекста, настройка доступа к атрибутам модуля и многое другое .

Те же шаги применимы для Ubuntu 16.04 и любого дистрибутива на основе Ubuntu, включая Kubuntu, Linux Mint и Elementary OS.

Прежде чем приступить

Вам нужно будет войти в систему как root или пользователь с доступом sudo, чтобы иметь возможность устанавливать пакеты в вашей системе Ubuntu.

Установка Python 3.7 в Ubuntu с Apt

Установка Python 3.7 на Ubuntu с помощью apt - относительно простой процесс и займет всего несколько минут:

Начните с обновления списка пакетов и установки необходимых компонентов:

Затем добавьте PPA deadsnakes в список ваших источников:


При появлении запроса нажмите, Enter чтобы продолжить:

После включения репозитория установите Python 3.7 с:

На этом этапе Python 3.7 установлен в вашей системе Ubuntu и готов к использованию. Вы можете проверить это, набрав:


Установка Python 3.7 в Ubuntu из исходного кода

В этом разделе мы покажем вам, как загрузить и скомпилировать Python 3.7:

Сначала обновите список пакетов и установите пакеты, необходимые для сборки исходного кода Python:

Загрузите исходный код последней версии со страницы загрузки Python, используя следующую команду wget :


На момент написания этой статьи последняя версия - 3.7.4 .

Затем перейдите в исходный каталог Python и запустите configure сценарий, который выполнит ряд проверок, чтобы убедиться, что все зависимости в вашей системе присутствуют:

Эта --enable-optimizations опция оптимизирует двоичный файл Python, запустив несколько тестов. Это замедляет процесс сборки.

Запустите процесс сборки Python, используя make :


Для ускорения сборки измените -j флаг в соответствии с вашим процессором. Если вы не знаете количество ядер вашего процессора, вы можете узнать его, набрав nproc . Система, используемая в этом руководстве, имеет 8 ядер, поэтому мы используем -j8 флаг.

Когда сборка будет завершена, установите двоичные файлы Python, выполнив следующую команду:


Не используйте стандарт, так make install как он перезапишет системный двоичный файл python3 по умолчанию.

Вот и все. Python 3.7 установлен и готов к использованию. Проверьте это, набрав:


Вывод покажет версию Python:


Вывод

Вы установили Python 3.7 на свой компьютер с Ubuntu 18.04 и можете приступить к разработке проекта Python 3.

Далее вы можете прочитать о том, как использовать Pip и как создавать виртуальные среды Python для различных проектов Python.

Проверка версии Python

По умолчанию минимальная установка Ubuntu уже включает в себя пакет Python. Посмотреть его версию можно с помощью пакетного менеджера.

Узнать версию python

Так же, если пакет установлен, то узнать версию Python можно через него самого.

В данном случае в ubuntu установлена версия 3.8.5. Обычно 3-я версия пайтона в системе именуется python3, а вторая просто python.

Установка Python

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

Рассмотрим сначала момент с установкой самой последней версии python. Сделать это проще всего с помощью пакетного менеджера apt:

Установка Python в Ubuntu

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

Установка из исходников

Установка python из исходников

Для установки python из исходников, нам понадобятся дополнительные системные пакеты. Устанавливаем их:

Теперь можно приступить к сборке:

Проверяем установленную из исходников версию:

Проверка версии

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

Установка pip в Ubuntu

Вместе с python обычно используется пакетный менеджер для него. Давайте рассмотрим, как выглядит установка pip в Ubuntu. В зависимости от версии пайтона, устанавливается подходящая версия pip. Тут так же как и с самим интерпретатором версия пакета будет зависеть от версии самого языка. Если он 2-й версии, то ставится просто pip, если 3-й, то pip3.

Установка pip в Ubuntu

Проверяем установленную версию pip:

Установленная версия pip соответствует присутствующей в системе версии python 3.8.

Установка пакетов python

Итак, pip мы установили, давайте теперь посмотрим, как с помощью этого пакетного менеджера устанавливать пакеты python. Никаких отличий от других пакетных менеджеров тут нет. Вот пример того, как устанавливается пакет pymysql для работы с базами данных mysql с помощью пайтона.

Установка пакетов python

Посмотреть список установленных пакетов можно следующим образом:

А вот так вы можете узнать, какие файлы были установлены в систему, принадлежащие указанному пакету.

Удалить пакет с помощью pip можно следующим образом:

Вкратце по работе с pip все. Ничего сложного, все как обычно.

Обновить Python

Рассмотрим теперь тему с обновлением python в ubuntu. Тут может быть несколько вариантов.

  1. Обновить с помощью apt до последней версии, находящейся в репозитории системы.
  2. Использовать для обновления python сторонний репозиторий.
  3. Собрать самую свежую версию из исходников.

Первый и третий варианты мы уже рассмотрели ранее. Обновление python до последней версии ничем не будет отличаться от чистой установки. В случае с пакетным менеджером apt, вам просто вместо install нужно будет указать upgrade.

как обновить python в ubuntu

Если в подключенных репозиториях ubuntu будет свежая версия python, то будет обновление до нее. Если нет, то ничего не произойдет. Останется текущая версия.

Обычное самые свежие версии python есть в отдельном репозитории deadsnakes. Подключим его:

А теперь попробуем поставить самую последнюю версию python из этого репозитория.

Установка python 3.9

В итоге мы обновились до самой свежей версии python 3.9.1. При этом нам не пришлось ее собирать из исходников. Мы воспользовались установкой через пакетный менеджер, а значит нам будет проще обновляться в дальнейшем и поддерживать актуальную версию. Обновления будут приходить автоматически через apt.

Выбор по умолчанию

В ubuntu указать дефолтную версию python, которая будет выбираться по умолчанию, можно с помощью команды update-alternatives. Вот как это выглядит:

Проверяем теперь дефолтную версию:

Выбор версии python по умолчанию

Так мы установили в системе по умолчанию версию python 3.8.5. А теперь изменим это на более свежую версию 3.9.1

В предложенном списке выбираем нужную нам версию пайтона, которая будет использоваться по умолчанию в нашей системе ubuntu.

дефолтная версия питона в убунту

Как запускать Python скрипты

С установкой и обновлением пайтона разобрались. Давайте теперь посмотрим, как нам запускать скрипты в системе. Ничего особенного для этого делать не надо. Достаточно указать бинарник интерпретатора и сам скрипт. Примерно так выглядит запуск python скрипта в ubuntu:

Скрипт будет запущен дефолтной версией пайтона. Если нужно запустить в какой-то конкретной версии, то делается это так:

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

запуск python скрипта в ubuntu

После этого достаточно сделать файл исполняемым и запустить прямо в консоли.

выполнение скрипта в консоли

Если вы хотите запускать скрипт как службу, то вам придется добавить юнит в systemd. Делается это следующим образом. Создаем файл /lib/systemd/system/python.service :

После этого перечитываем конфигурацию systemd и запускаем скрипт на пайтоне как службу:

запуск скрипта питона как службы

Так как мой скрипт не предполагает работу в режиме службы, то после выполнения он был завершен. Если же у вас там запрограммирована непрерывная работа, то он будет работать как служба через systemd.

Как удалить Python в Ubuntu

Если вам по какой-то причине необходимо удалить python с сервера ubuntu, то сделать это можно штатным образом через пакетный менеджер apt. Для того, чтобы узнать версию пакетов для удаления, можно вывести их список.

После этого, подставляя версию нужного пакета, удалить его:

Только будьте внимательны при удалении python из системы. Он очень много кем используется. При его удалении будет предложено удалить и все его зависимости. А это внушительный список пакетов, которые без пайтона не смогут работать.

Как удалить python из Ubuntu

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

Запуск Python в Docker

Ну и в завершении статьи про Python в Ubuntu, покажу, как можно еще его запускать без локальной установки непосредственно в саму систему. Вы можете запустить питона в докере. Для этого просто выберите необходимую вам версию Python и запустите Docker контейнер с ней.

В данном случае я быстро запустил свой скрипт в версии 3, используя контейнер python:3. Если мне то же самое нужно сделать во 2-й версии, то я просто использую другой контейнер.

Читайте также: