Fork me on GitHub

Шаги для улучшения opensource проект на Python

источник: https://towardsdatascience.com/10-steps-to-set-up-your-python-project-for-success-14ff88b5d13

Добавим к проекту CI, тесты, покрытие тестами и др.

  1. Установить пакет Black (https://github.com/ambv/black)

Black - пакет который форматирует код согласно PEP8.

Добавьте пакет black в файл зависимостей для разработчиков requirements_dev.txt

Найти как использовать автоматическое форматирование кода с помощью Black в Visual Code.

  1. Создайте файл .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/ 
  1. Установка и настройка pytest

Добавьте пакет pytest в requirements_dev.txt

Запустите для того чтобы pytest нашел ваш пакет:

pip install -e .
  1. Создание тестов

Добавьте папку 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 
  1. 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 
  1. Тестирование Travis CI

Закоммитите ваши изменения, отправить в гитхаб, создайте PR. Travis должен автоматически запуститься, сервис сообщит если найдены ошибки в PR.

  1. Покрытие кода тестами

Пакет pytest-cov – для создания отчетов покрытие теста.

Добавить информацию пакета в файл requirements_dev.txt

Запустить:

pytest --cov=my_project_name  
  1. Добавление 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 
  1. Добавление PyUp

https://pyup.io/ - сервис для опередения проблемных с точки зрения безопасности зависимостей. Автоматически создается PR для обновления в гитхабе.

social