Maison  >  Article  >  développement back-end  >  Tutoriel toxique sur l'outil d'automatisation des tâches Python

Tutoriel toxique sur l'outil d'automatisation des tâches Python

王林
王林avant
2023-04-19 17:49:061313parcourir

Tutoriel toxique sur l'outil d'automatisation des tâches Python

  • Outil d'automatisation du frontend CI et des tâches de développement piloté par ligne de commande
  • Outil d'automatisation du frontend CI et des tâches de développement piloté par ligne de commande

L'adresse du projet de tox est : https://github.com/tox-dev /tox

Sa fonction principale est de prendre en charge la création d'environnements Python isolés, dans lesquels différentes versions d'interpréteurs Python et diverses bibliothèques dépendantes peuvent être installées, afin de faciliter aux développeurs la réalisation de tests automatisés, d'empaquetage, d'intégration continue, etc.

En termes simples, tox est un outil en ligne de commande pour gérer les environnements virtuels de test. Il existe depuis de nombreuses années et est largement utilisé par les développeurs. Par exemple, la célèbre plateforme de cloud computing OpenStack l'utilise également comme l'un des outils de test les plus basiques.

1. Que peut faire la tox ?

Les utilisations segmentées incluent :

  • Créer un environnement de développement
  • Exécuter des outils d'analyse et de test de code statique
  • Automatiser la création de packages
  • Exécuter des tests pour les packages logiciels créés par tox
  • Vérifier si le progiciel peut Installation fluide sur différentes versions/interprètes de Python
  • Intégration continue (CI) unifiée et tests basés sur la ligne de commande
  • Créer et déployer la documentation du projet
  • Publier des packages sur PyPI ou toute autre plateforme

La documentation officielle de Tox en répertorie plus plus de 40 exemples de scénarios d'utilisation. La liste détaillée peut être consultée sur : https://tox.readthedocs.io/en/latest/examples.html

Tutoriel toxique sur l'outil d'automatisation des tâches Python

2.

À propos de son utilisation : utilisez pip install tox pour installer, utilisez tox pour exécuter tous les environnements de test et tox -e envname pour exécuter l'environnement spécifié. Il existe également de nombreux paramètres de ligne de commande, qui peuvent être visualisés via tox -h. Le comportement de

tox est contrôlé par son fichier de configuration. Actuellement, il prend en charge 3 fichiers de configuration :

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

avec le propre tox du projet tox. ini En prenant le contenu de configuration comme exemple, vous pouvez voir qu'il est configuré comme ceci (https://github.com/tox-dev/tox/blob/master/tox.ini) :

Tutoriel toxique sur l'outil d'automatisation des tâches Python

Tutoriel toxique sur l'outil d'automatisation des tâches Python

Chaque [xxx] et le contenu en dessous forment une section, avec des lignes vides entre chaque section.

[tox] Les éléments suivants sont des éléments de configuration globaux. Le champ envlist définit l'environnement dans lequel tox opère. [xxx] Voici les éléments de configuration de l'environnement virtuel xxx [xxx:yyy] hérite de la configuration de xxx et ses propres éléments de configuration ont une priorité plus élevée.

Pour chaque environnement virtuel, de nombreux éléments de configuration sont disponibles, tels que ceux couramment utilisés : description (informations de description), basepython (version de l'interpréteur Python), deps (dépendances de l'environnement), commandes (instructions de commande), etc.

tox prend également en charge la substitution de variables, qui fournit des variables de base intégrées (globales ou pour les environnements virtuels) : {toxinidir}, {homedir}, {envname}, {envdir}, etc.

En plus de la substitution de variable de base, il prend également en charge ces utilisations avancées :

  • Obtenez la variable d'environnement du système d'exploitation : {env:KEY}, l'effet est équivalent à os.environ['KEY']. Peut être modifié en : {env:KEY:DEFAULTVALUE}, la valeur par défaut est utilisée lorsque la variable d'environnement ne peut pas être obtenue ; {env:KEY:{env:DEFAULT_OF_KEY}}, pour obtenir l'effet de valeur de if-else

Passez les paramètres de ligne de commande : {posargs:DEFAULTS}, lorsqu'il n'y a pas de paramètres de ligne de commande, la valeur DEFAULTS est utilisée. Utilisation : tox arg1 arg2 pour transmettre deux paramètres, ou tox -- --opt1 arg1 pour transmettre "--opt1 arg1" dans son ensemble.

  • Transfert de valeur entre chapitres : {[sectionname]valuename}, le contenu des différents chapitres peut être transféré et utilisé.
  • Injection de console interactive : {tty:ON_VALUE:OFF_VALUE}, lorsque la console shell interactive est ouverte, la première valeur est utilisée, sinon la seconde est utilisée. Ceci est un exemple lorsque pytest utilise "--pdb".

En plus d'être utilisées pour la substitution de variables, les accolades "{}" peuvent également être utilisées comme valeur du jugement "Relation OU". Regardez directement l'exemple suivant :

[tox]
envlist = {py27,py36}-django{15,16}

{py27,py36}-django{15,16} a chacun 2 valeurs​​dans les 2 ensembles d'accolades. Elles peuvent en fait être combinées en 4 environnements : py27-django15. , py27-django16, py36-django15, py36-django16.

À propos des éléments de configuration, des conditions d'utilisation, de la signification, de l'utilisation avancée, etc. de tox, vous pouvez les consulter dans la documentation officielle : https://tox.readthedocs.io/en/latest/config.html

3 , Plug-inisation de tox

En plus de sa forte configurabilité, tox a également une forte évolutivité. Il est enfichable et un écosystème de plug-ins extrêmement riche a été généré autour de lui.

Utilisez pip search tox, vous pouvez voir un grand nombre de bibliothèques commençant par "tox-", ce sont toutes des packages de plug-ins de tox. Parmi eux figurent des noms bien connus tels que setuptools, pipenv, conda, travis, pytest et docker.

Tutoriel toxique sur l'outil d'automatisation des tâches Python

tox a ouvert de nombreuses interfaces API pour permettre aux autres de personnaliser et de développer des plug-ins.

Tutoriel toxique sur l'outil d'automatisation des tâches Python

4. Le workflow de tox

Voyons comment fonctionne tox :

Tutoriel toxique sur l'outil d'automatisation des tâches Python

Les principaux liens de son workflow sont :

  • Configuration (à partir de la configuration) : Charger la configuration (tels que tox.ini), analyser les paramètres de ligne de commande, lire les variables d'environnement système, etc.
  • Packaging : Facultatif, pour les projets avec un fichier setup.py, vous pouvez le générer dans cette étape Distribution source
  • Créer un environnement virtuel : utilisez virtualenv par défaut pour créer un environnement virtuel, installez les dépendances requises en fonction de "deps" dans l'élément de configuration, puis exécutez les commandes configurées (commandes)
  • Rapport (rapport) : Résumez et répertoriez les résultats en cours d'exécution de tous les environnements virtuels

5. Résumé

tox lui-même se positionne comme un outil de test, qui tente d'automatiser, de standardiser et de traiter les tests Python. Mais contrairement aux frameworks de test tels que unittest et pytest, il fonctionne au-delà du niveau du code et constitue un outil au niveau du projet. Par conséquent, il doit être combiné avec ces frameworks de test, ou gérer plusieurs tâches automatisées en même temps (telles que l'exécution de pep8, tester la couverture du code, générer de la documentation, etc.), afin qu'il puisse mieux exercer sa valeur.

L'une de ses fonctionnalités est la création/gestion d'environnements virtuels, mais celle-ci n'est utilisée que pour faciliter les tests. Par conséquent, par rapport à d'autres outils capables de gérer des environnements virtuels, tels que Virtualenvwrapper, conda, pipenv, poésie, il est dedans. dans certains cas, il existe des lacunes à cet égard.

tox dispose également d'une forte configurabilité et d'un riche support de plug-ins, ce qui lui confère de grandes possibilités et une liberté d'utilisation. Par conséquent, de nombreux développeurs fidèles l’utilisent encore. Par exemple, l’auteur de la série d’articles que je viens de traduire est l’un de ses responsables.

Tutoriel toxique sur l'outil d'automatisation des tâches Python

Enfin, je dois ajouter que tox utilise des fichiers de configuration comme pilotes, mais les fichiers de configuration sont encore assez lourds, donc quelqu'un a développé un nox similaire à tox, en utilisant des fichiers Python pour la configuration. Ce projet est également très populaire, attirant de nombreux projets à investir sous son égide, tels que pipx, urllib3, Salt, etc. Si ce projet vous intéresse, veuillez consulter : https://nox.thea.codes/en/stable.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer