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.
Les utilisations segmentées incluent :
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
À 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 :
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) :
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 :
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.
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 valeursdans 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
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.
tox a ouvert de nombreuses interfaces API pour permettre aux autres de personnaliser et de développer des plug-ins.
Voyons comment fonctionne tox :
Les principaux liens de son workflow sont :
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.
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!