[PYTHON] Tox Einstellungsdatei Spickzettel

Überblick

Da ich tox nach dem Studium mit dem CI for Python-Modul eingeführt habe, werde ich den Inhalt, den ich häufig schreibe, für mich selbst in der Einstellungsdatei beschreiben.

Was ist giftig?

Es ist ein Tool, das Tests in MultiEnvironment mit "virtualenv" durchführen kann. Es ist praktisch, das Modul mit mehreren Python-Versionen testen zu können.

Dateityp einstellen

Gemäß der Dokumentation werden die drei Dateitypen in der folgenden Prioritätsreihenfolge gelesen.

  1. pyproject.toml
  2. tox.ini
  3. setup.cfg

Der Inhalt von "tox.ini" wird unten beschrieben.

Eingebettete Variablen

Eine Liste der eingebetteten Variablen, die in jedem Abschnitt verfügbar sind.

Name einstellen Überblick
{toxinidir} tox.iniVerzeichnis wo
{toxworkdir} Das Verzeichnis, in dem die virtuelle Umgebung erstellt wird
{envname} Name der virtuellen Umgebung,[tox:{envname}]Was wurde in dem Teil von beschrieben
{envdir} Standardmäßig Verzeichnis der virtuellen Umgebung{toxworkdir}/{envname}

globaler Abschnitt

In diesem Abschnitt werden allgemeine Einstellungen beschrieben. [tox] Unten beschrieben.

Name einstellen Überblick Standardwert
envlist Mehrere Ausführungsumgebungen können durch Aufzählen, Trennen durch Kommas oder Trennen von Zeilen beschrieben werden
Grundsätzlich beschrieben
py37``py38Einige sind standardmäßig vorbereitet
-
toxworkdir Das Verzeichnis, in dem die virtuelle Umgebung erstellt wird
Von tox erstellte Dateien werden in diesem Verzeichnis gespeichert
{toxinidir}/.tox
skipsdist Gibt an, ob die Ergebnisse verpackt werden sollen
trueÜberspringen mit
false
skip_missing_interpreters Legen Sie den Rückkehrcode fest, wenn er in der Interpreter-Beziehung fehlschlägt
trueWenn dies fehlschlägt, geben Sie den Code zurück, der als erfolgreich gilt.configLiest aus der Konfigurationsdatei
config

example

tox.ini


[tox]
envlist =
    py38, py37
    flake8
    isort
skipsdist = true
skip_missing_interpreters = true

env Abschnitt

In diesem Abschnitt werden die Details der einzelnen Umgebungen beschrieben, die in der Envlist des globalen Abschnitts beschrieben sind. [tox: {envname}] Wird unten beschrieben.

Name einstellen Überblick Standardwert
commands Verpflichtend
Inhalt der Befehle, die in der aktuellen Umgebung ausgeführt werden sollen
coverage run -p -m pytestOderflake8Und so weiter
-
deps Geben Sie die Abhängigkeiten an, die zum Ausführen des Befehls erforderlich sind
Geben Sie das Modul direkt an oder benötigen Sie.Beschreibe in txt-rrequirements.txtGeben Sie mit an
Zusamenfassendpip installOptionaler Teil von
-
passenv Geben Sie die Umgebungsvariable an, die Sie an die virtuelle Ausführungsumgebung erben möchten
LANG``PIP_INDEX_URLUsw. kann eingestellt werden
-
setenv Legen Sie neue Umgebungsvariablen in der virtuellen Ausführungsumgebung fest -
whitelist_externals Es wird nicht auf der Seite der virtuellen Ausführungsumgebung vorbereitet, sondern muss angegeben werden, wenn Sie es ohne Probleme mit Befehlen in der lokalen Umgebung verwenden möchten -
alwayscopy Wenn Sie keine symbolischen Links zu Python-Dateien mögentrueBezeichnung false
changedir Geben Sie das Arbeitsverzeichnis an, wenn Sie den Befehl ausführen {toxinidir}
envlogdir Festlegen des Protokolldateispeichers {envdir}/log
description Geben Sie eine kurze Beschreibung
Der Inhalt wird angezeigt, wenn beim Ausführen des Umgebungsanzeigebefehls mit tox ausführlich angegeben wird.
no description

example

tox.ini


[tox]
envlist =
    py38
    flake8
skipsdist = true

#Details zur py38-Umgebung
[testenv]
passenv = LANG
deps = -rrequirements.txt
passenv = PYTHONPATH
setenv =
    PYTHONDONTWRITEBYTECODE=1
changedir = tests
commands =
    coverage run -p -m pytest

#Details der flake8-Umgebung
[testenv:flake8]
skip_install = true
deps =
    flake8 >= 3.7
    flake8-import-order
changedir = {toxinidir}
description = 'check pep8 style'
commands = flake8 module

Die Einstellungen für pytest und flake8 selbst sind in setup.cfg beschrieben.

setup.cfg


[tool:pytest]
testpaths = tests

[coverage:run]
branch = True
source =
    module
    tests

[flake8]
exclude = build,.git/*,.tox/*,./tests/*
ignore =
    # allow Multiple spaces before Operator
    E221
max-line-length = 140

Reference

Recommended Posts

Tox Einstellungsdatei Spickzettel
Curry Spickzettel
SQLite3 Spickzettel
pyenv Spickzettel
conda Befehl Spickzettel
PIL / Kissen Spickzettel
ps Befehl Spickzettel
Spark API Spickzettel
Python3 Spickzettel (Basic)
PySpark Cheet Sheet [Python]
Python-Spickzettel
numpy Speicher wiederverwenden Spickzettel
[Python3] Standardeingabe [Cheet Sheet]
Data Science Cheet Sheet (Python)
Slack API Anhänge Spickzettel
Python Django Tutorial Cheet Sheet
Scikit lernen Algorithmus Spickzettel
Apache Beam Cheet Sheet [Python]
Persönlicher Spickzettel von Google Test / Mock
CPS-Spickzettel (Continuous Delivery Style)
Python-Spickzettel (für C ++ erfahren)
Best Practices für Konfigurationsdateien in Flask