источник: https://towardsdatascience.com/10-steps-to-set-up-your-python-project-for-success-14ff88b5d13
Добавим к проекту CI, тесты, покрытие тестами и др.
- Установить пакет Black (https://github.com/ambv/black)
Black - пакет который форматирует код согласно PEP8.
Добавьте пакет black в файл зависимостей для разработчиков requirements_dev.txt
Найти как использовать автоматическое форматирование кода с помощью Black в Visual Code.
- Создайте файл .pypirc
.pypirc - используется инструментом Twine для автоматического входа в PyPI / TestPyPI
Шаблон файла:
[distutils]
index-servers =
pypi
testpypi
[testpypi]
repository: https://test.pypi.org/legacy
username = your_username
password = your_pypitest_password
[pypi]
username = your_username
password = your_pypi_password
Настройки файла:
chmod 600 ~/.pypirc
twine upload -r testpypi dist/
twine upload dist/
- Установка и настройка pytest
Добавьте пакет pytest в requirements_dev.txt
Запустите для того чтобы pytest нашел ваш пакет:
pip install -e .
- Создание тестов
Добавьте папку tests в верхний уровень вашего проекта. Начинайте с test_ имена ваших тестов, pytest автоматически искать.
Например,
"""Tests for `notebookc` package."""
import pytest
from notebookc import notebookc
def test_convert(capsys):
"""Correct my_name argument prints"""
notebookc.convert("Jill")
captured = capsys.readouterr()
assert "Jall" in captured.out
- Travis CI
Travis CI - это сервис используется для посторойки и тестирование программных продуктов.
- Создание .travis.yml
Добавьте файл .travis.yml в папку проекта.
dist: xenial
language: python
python: 3.7.2
install:
- pip install -r requirements_dev.txt
- pip install -e .
script:
- pytest
- Тестирование Travis CI
Закоммитите ваши изменения, отправить в гитхаб, создайте PR. Travis должен автоматически запуститься, сервис сообщит если найдены ошибки в PR.
- Покрытие кода тестами
Пакет pytest-cov – для создания отчетов покрытие теста.
Добавить информацию пакета в файл requirements_dev.txt
Запустить:
pytest --cov=my_project_name
- Добавление Coveralls
Сервис https://coveralls.io/
dist: xenial
language: python
python: 3.7.2
install:
— pip install -r requirements_dev.txt
— pip install -e .
script:
— pytest --cov=my_package_name
after_success:
— coveralls
- Добавление PyUp
https://pyup.io/ - сервис для опередения проблемных с точки зрения безопасности зависимостей. Автоматически создается PR для обновления в гитхабе.