首页 后端开发 Python教程 Python 任务自动化工具 tox 教程

Python 任务自动化工具 tox 教程

Apr 19, 2023 pm 05:49 PM
python 自动化工具 tox

Python 任务自动化工具 tox 教程

  •   Command line driven CI frontend and development task automation tool
  •  命令行驱动的 CI 前端和开发任务自动化工具

tox 的项目地址是:https://github.com/tox-dev/tox

其核心作用是支持创建隔离的 Python 环境,在里面可以安装不同版本的 Python 解释器与各种依赖库,以此方便开发者做自动化测试、打包、持续集成等事情。

简单来说,tox 是一个管理测试虚拟环境的命令行工具。它已存在多年且广被开发者们使用,例如,著名的云计算平台 OpenStack 也采用了它,作为最基础的测试工具之一。

1、tox 能做什么?

细分的用途包括:

  •  创建开发环境
  •  运行静态代码分析与测试工具
  •  自动化构建包
  •  针对 tox 构建的软件包运行测试
  •  检查软件包是否能在不同的 Python 版本/解释器中顺利安装
  •  统一持续集成(CI)和基于命令行的测试
  •  创建和部署项目文档
  •  将软件包发布到 PyPI 或任何其它平台

tox 官方文档中列出了 40 余种使用场景的示例,详细的列表可查看:https://tox.readthedocs.io/en/latest/examples.html

Python 任务自动化工具 tox 教程

2、tox 怎么配置?

关于它的用法:使用pip install tox 安装,使用tox 运行全部测试环境,和tox -e envname 运行指定的环境。还有不少的命令行参数,通过tox -h 查看。

tox 的行为由其配置文件控制,当前它支持 3 种配置文件:

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

以 tox 项目自己的 tox.ini 配置内容为例,可以看到它是这样配置的(https://github.com/tox-dev/tox/blob/master/tox.ini):

Python 任务自动化工具 tox 教程

Python 任务自动化工具 tox 教程

每个[xxx]及其下方内容组成一个章节(section),每个章节间使用空行作间隔。

[tox]下面是全局性的配置项,envlist 字段定义了 tox 去操作的环境。[xxx]下面是 xxx 虚拟环境的配置项,[xxx:yyy]继承 xxx 的配置,同时其自身配置项的优先级更高。

对于每个虚拟环境,可用的配置项很多,例如常用的有:description(描述信息)、basepython(Python解释器版本)、deps(环境依赖项)、commands(命令语句)等等。

tox 还支持作变量替换,它提供了一些内置的基础变量(全局的或对于虚拟环境的):{toxinidir}、{homedir}、{envname}、{envdir}等等。

除了基础性的变量替换,它还支持这些高级用法:

  •  取操作系统的环境变量:{env:KEY},效果等同于os.environ['KEY'] 。可以变化成:{env:KEY:DEFAULTVALUE},在取不到环境变量时则使用默认值;{env:KEY:{env:DEFAULT_OF_KEY}},达到 if-else 的取值效果

   传递命令行参数:{posargs:DEFAULTS},当没有命令行参数时,使用 DEFAULTS 值。使用方式:tox arg1 arg2 传两个参,或者tox -- --opt1 arg1 将“-- opt1 arg1”作为整体传入。

  •  章节间传值:{[sectionname]valuename},不同章节的内容可以传递使用。
  •  交互式控制台注入:{tty:ON_VALUE:OFF_VALUE},当交互式 shell 控制台开启时,使用第一个值,否则使用第二个。pytest 在使用“--pdb”时,是这样的例子。

花括号“{}”除了可以做变量替换使用,它还可以作为“或关系”判断的取值。直接看下面的例子:

[tox]
envlist = {py27,py36}-django{15,16}
登录后复制

{py27,py36}-django{15,16} 的 2 组花括号内各有 2 个值,它们实际可以组合成 4 个环境:py27-django15、py27-django16、py36-django15、py36-django16。

关于 tox 有哪些配置项、使用条件、什么含义、高级用法等等内容,可在官方文档中查看:https://tox.readthedocs.io/en/latest/config.html

3、tox 的插件化

除了自身强大的可配置性,tox 还具有很强的可扩展性,它是可插拔的(pluggable),围绕它产生了一个极为丰富的插件生态。

使用pip search tox ,可以看到数量众多的“tox-”开头的库,它们都是 tox 的插件包。其中不乏 setuptools、pipenv、conda、travis、pytest、docker 等被大家熟知的名字。

Python 任务自动化工具 tox 教程

tox 开放了挺多的 API 接口,方便其他人定制开发插件。

Python 任务自动化工具 tox 教程

4、tox 的工作流程

接下来看看 tox 是怎么运作的:

Python 任务自动化工具 tox 教程

其工作流程中主要的环节有:

  •  配置(从figuration):加载配置文件(如 tox.ini),解析命令行参数,读取系统环境变量等
  •  打包(packaging):可选的,对于带有 setup.py 文件的项目,可以在这步去生成它的源发行版
  •  创建虚拟环境:默认使用 virtualenv 来创建虚拟环境,并根据配置项中的“deps”安装所需的依赖项,然后执行配置好的命令(commands)
  •  报告(report):汇总所有虚拟环境的运行结果并罗列出来

5、小结

tox 本身定位是一个测试工具,它试图令 Pytho 测试工作变得自动化、标准化与流程化。但跟 unittest 和 pytest 这些测试框架不同,它作用的是代码层面之外的事情,是一种项目级的工具。因此,它需要跟这些测试框架相结合,或者同时处理多种自动化任务(如跑 pep8、测代码覆盖率、生成文档等等),这样才能更好地发挥它的价值。

它的一大特色在于创建/管理虚拟环境,但这只是为了方便测试而使用的手段,因此相比其它可管理虚拟环境的工具,如 Virtualenvwrapper、conda、pipenv、poetry,它在某些方面就存在着不足。

tox 还有强大的可配置性与丰富的插件支持,这使得它在运用上具有很大的可能性与自由度。因此,不少忠实开发者仍在持续地在使用它,比如,我刚翻译好的系列文章的作者就是它的维护者之一。

Python 任务自动化工具 tox 教程

最后还需补充一点,tox 使用配置文件作驱动,但配置文件还是挺繁琐的,因此有人开发了一个跟 tox 相似的nox,使用 Python 文件来做配置。这个项目也很受欢迎,吸引了很多项目投入其门下,例如 pipx、urllib3、Salt 等等。对该项目感兴趣的话,请查看:https://nox.thea.codes/en/stable。

以上是Python 任务自动化工具 tox 教程的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

DeepSeekapi怎么接入-DeepSeekapi接入调用教程 DeepSeekapi怎么接入-DeepSeekapi接入调用教程 Mar 12, 2025 pm 12:24 PM

DeepSeekAPI接入与调用详解:快速上手指南本文将详细指导您如何接入和调用DeepSeekAPI,助您轻松使用强大的AI模型。第一步:获取API密钥访问DeepSeek官方网站,点击右上角的“开放平台”。您将获得一定数量的免费Tokens(用于计量API使用量)。在左侧菜单中,点击“APIKeys”,然后点击“创建APIkey”。为您的APIkey命名(例如,“test”),并立即复制生成的密钥。请务必妥善保存此密钥,因为它只会显示一次

量化炒币交易软件 量化炒币交易软件 Mar 19, 2025 pm 04:06 PM

本文深入探讨了币安(Binance)、欧易(OKX)和芝麻开门(Gate.io)三大交易所的量化交易功能,旨在帮助量化交易者选择合适的平台。文章首先介绍了量化交易的概念、优势及挑战,并阐述了优秀量化交易软件应具备的功能,例如API支持、数据源、回测工具和风控功能等。随后,对三家交易所的量化交易功能进行了详细对比分析,分别指出了它们的优劣势,最终给出了针对不同经验水平的量化交易者的平台选择建议,并强调了风险评估和策略回测的重要性。 无论您是新手还是经验丰富的量化交易者,本文都将为您提供有价值的参

deepseek如何本地部署r1模型-deepseek本地安装r1模型教程 deepseek如何本地部署r1模型-deepseek本地安装r1模型教程 Mar 12, 2025 pm 12:15 PM

DeepSeekR1模型本地部署指南:释放数据分析与预测潜能DeepSeek是一款功能强大的数据分析和预测工具,其R1模型能够为各种应用场景提供高效精准的模型支持。本指南将详细介绍如何在本地环境中部署DeepSeekR1模型,助您快速上手并充分利用其强大功能。DeepSeekR1模型本地部署步骤准备阶段系统要求:请确保您的本地机器满足DeepSeek的最低系统配置要求(具体要求请参考DeepSeek官方文档)。软件安装:下载并安装DeepSeek官方提供的安装包,并按照安装指南完

Deepseek如何用Python实现调用-Deepseek Python调用方法指南 Deepseek如何用Python实现调用-Deepseek Python调用方法指南 Mar 12, 2025 pm 12:51 PM

DeepSeek深度学习库Python调用指南DeepSeek是一个功能强大的深度学习库,可用于构建和训练各种神经网络模型。本文将详细介绍如何使用Python调用DeepSeek进行深度学习开发。使用Python调用DeepSeek的步骤1.安装DeepSeek确保已安装Python环境和pip工具。使用以下命令安装DeepSeek:pipinstalldeepseek2.导入DeepSeek库在Python脚本或JupyterNotebook中导入DeepSeek库:impor

币安Alpha是什么 币安Alpha是什么 Mar 25, 2025 pm 03:39 PM

安币Alpha是币安平台上为专业交易者和投资者提供的工具和服务聚合平台。它的核心功能包括:1.策略广场,汇集不同交易策略;2.策略构建器,允许自定义交易策略;3.高级数据分析,提供市场分析工具;4.机构级服务,满足专业投资者的需求。

哪些交易所可以通过交易端发送期权对冲指令 哪些交易所可以通过交易端发送期权对冲指令 Mar 28, 2025 pm 03:27 PM

截至2024年,支持通过交易终端直接发送期权对冲指令的主流加密货币交易所有:1. Deribit,支持Delta对冲、Gamma Scalping等高级策略,提供网页版/API一键对冲;2. OKX,支持波动率对冲和策略组合工具,网页端/APP内置对冲面板;3. Binance,支持保护性对冲,需手动或API组合仓位;4. CME,提供标准期权,需通过经纪商接入;5. LedgerX,提供专业级对冲工具,需机构认证。

如何在LAMP架构下高效整合Node.js或Python服务? 如何在LAMP架构下高效整合Node.js或Python服务? Apr 01, 2025 pm 02:48 PM

在LAMP架构下整合Node.js或Python服务许多网站开发者都面临这样的问题:已有的LAMP(Linux Apache MySQL PHP)架构网站需要...

Python如何高效解析LaTeX公式中的多层嵌套括号并转换为多维字典? Python如何高效解析LaTeX公式中的多层嵌套括号并转换为多维字典? Apr 01, 2025 am 08:57 AM

Python解析LaTeX多层括号:构建多维字典许多LaTeX...

See all articles