网站开发与维护视频,正品率最高的购物网站,网站建设解决方案,网站内部链接优化方法1、tox 能做什么#xff1f;
细分的用途包括#xff1a;
创建开发环境
运行静态代码分析与测试工具
自动化构建包
针对 tox 构建的软件包运行测试
检查软件包是否能在不同的 Python 版本/解释器中顺利安装
统一持续集成#xff08;CI#xff09;和基于命令行的测试
创建和部…1、tox 能做什么
细分的用途包括
创建开发环境
运行静态代码分析与测试工具
自动化构建包
针对 tox 构建的软件包运行测试
检查软件包是否能在不同的 Python 版本/解释器中顺利安装
统一持续集成CI和基于命令行的测试
创建和部署项目文档
将软件包发布到 PyPI 或任何其它平台
tox 官方文档中列出了 40 余种使用场景的示例详细的列表可查看https://tox.readthedocs.io/en/latest/examples.html2、tox 怎么配置
关于它的用法使用pip install tox 安装使用tox 运行全部测试环境和tox -e envname 运行指定的环境。还有不少的命令行参数通过tox -h 查看。
tox 的行为由其配置文件控制当前它支持 3 种配置文件
pyproject.toml
tox.ini
setup.cfg
以 tox 项目自己的 tox.ini 配置内容为例可以看到它是这样配置的https://github.com/tox-dev/tox/blob/master/tox.ini每个[xxx]及其下方内容组成一个章节section每个章节间使用空行作间隔。
[tox]下面是全局性的配置项envlist 字段定义了 tox 去操作的环境。[xxx]下面是 xxx 虚拟环境的配置项[xxx:yyy]继承 xxx 的配置同时其自身配置项的优先级更高。
对于每个虚拟环境可用的配置项很多例如常用的有description描述信息、basepythonPython解释器版本、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 等被大家熟知的名字。tox 开放了挺多的 API 接口方便其他人定制开发插件。4、tox 的工作流程
接下来看看 tox 是怎么运作的其工作流程中主要的环节有
配置从figuration加载配置文件如 tox.ini解析命令行参数读取系统环境变量等
打包packaging可选的对于带有 setup.py 文件的项目可以在这步去生成它的源发行版
创建虚拟环境默认使用 virtualenv 来创建虚拟环境并根据配置项中的“deps”安装所需的依赖项然后执行配置好的命令commands
报告report汇总所有虚拟环境的运行结果并罗列出来
5、小结
tox 本身定位是一个测试工具它试图令 Pytho 测试工作变得自动化、标准化与流程化。但跟 unittest 和 pytest 这些测试框架不同它作用的是代码层面之外的事情是一种项目级的工具。因此它需要跟这些测试框架相结合或者同时处理多种自动化任务如跑 pep8、测代码覆盖率、生成文档等等这样才能更好地发挥它的价值。
它的一大特色在于创建/管理虚拟环境但这只是为了方便测试而使用的手段因此相比其它可管理虚拟环境的工具如 Virtualenvwrapper、conda、pipenv、poetry它在某些方面就存在着不足。