Python任务自动化工具tox使用教程
作者:python大师 发布时间:2022-08-28 12:33:58
1、tox 能做什么?
细分的用途包括:
创建开发环境
运行静态代码分析与测试工具
自动化构建包
针对 tox 构建的软件包运行测试
检查软件包是否能在不同的 Python 版本/解释器中顺利安装
统一持续集成(CI)和基于命令行的测试
创建和部署项目文档
将软件包发布到 PyPI 或任何其它平台
tox 官方文档中列出了 40 余种使用场景的示例,详细的列表可查看:
https://tox.readthedocs.io/en/latest/examples.html
2、tox 怎么配置?
关于它的用法:使用pip install tox安装,使用tox运行全部测试环境,和tox -e envname运行指定的环境。还有不少的命令行参数,通过tox -h查看。
tox 的行为由其配置文件控制,当前它支持 3 种配置文件:
pyproject.tomltox.inisetup.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(描述信息)、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 等被大家熟知的名字。
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,它在某些方面就存在着不足。
来源:https://www.cnblogs.com/daniumiqi/p/12179453.html
猜你喜欢
- 不是炒冷饭,我添加了很多新的功能哦演示地址: xwinhtcdemo.htmCSS: global.cssHTC: xwin.htc特点:1
- 使用python将图片改为灰度图或黑白图有三种方式,分别是是使用cv2库和PIL库来实现,详细过程如下所示。1. 使用cv2库将图片改为灰度
- 本文将详细解释这些函数的使用方法。首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文
- 多线程-共享全局变量#coding=utf-8from threading import Threadimport timeg_num =
- var long2="1988-0w-07";alert(long2.substring(0,4)+"----
- 表单递交合法性检测-只接受数字。如下代码加入HTML的<head>区:<SCRIPT LANGUAGE=&quo
- 1、注释单行注释,使用#,#号后面的都是注射,例如#我是单行注释print("Hello Python world")多
- 本文中的示例主要是解决在函数间不能传递多个(32个以上)参数的问题,解题的具体思路就是采用记录类型作为函数的输入和返回值,所以我们需要先定义
- 一、概念说明柱状图(bar chart),从相同的横坐标出发,以不同的数值大小来设定柱子的高度,进而表示无序或有序的定性数据间某个定量指标的
- 序言本文所提及的VTD-XML并非本文作者原创,作者只是对它进行介绍。问题通常当我们提起XML的使用时,最头痛的部分便是XML的verbos
- 大致功能:$() 取得所有元素$("div") 取得所有DIV$("#a1") 取得ID为a1的元素
- 今天我们来学习字符串数据类型相关知识,将讨论如何声明字符串数据类型,字符串数据类型与 ASCII 表的关系,字符串数据类型的属性,以及一些重
- 1、安装requests、xlrd、json、unittest库<1>pip 命令安装:pip install requests
- 导读:SQL Server数据迁移的知识之前已经为大家介绍了很多,比如SQL Server数据库迁移方法,接下来就为大家详细介绍SQL Se
- 如下:counter.htm<a href=counter.asp?save=123&url=http://127.0.0
- 网上存在这么一个例子 obj = pd.Series([7,-5,7,4,2,0,4])obj.rank()输出为:0 6.51
- jsonpathjsonpath 用于多层嵌套 json格式的 解析。pip install jsonpathJsonPath描述$根节点@
- 对于如何结束一个Python程序或者用Python操作去结束一个进程等,Python本身给出了好几种方法,而这些方式也存在着一些区别,对相关
- 本文介绍了几种常用的python下载文件的方法,具体使用到了htttplib2,urllib等包,希望对大家有帮忙。1.简单文件下载使用ht
- 客户端调用XMLHTTP的过程很简单,只有5个步骤: 1、创建XMLHTTP对象 2、打开与服务端的连接,同时定义指令发送方式,服务网页(U