python自动化教程_Python 任务自动化工具 tox 教程

1、tox 能做什么?

细分的用途包括:

创建开发环境

运行静态代码分析与测试工具

自动化构建包

针对 tox 构建的软件包运行测试

检查软件包是否能在不同的 Python 版本/解释器中顺利安装

统一持续集成(CI)和基于命令行的测试

创建和部署项目文档

将软件包发布到 PyPI 或任何其它平台

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

1903877-20200111113203706-1594595627.png

2、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):

1903877-20200111113231803-1896453278.png

1903877-20200111113307681-2015116328.png

每个[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 等被大家熟知的名字。

1903877-20200111113406118-1709333040.png

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

1903877-20200111113433054-1006227292.png

4、tox 的工作流程

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

1903877-20200111113457246-321590272.png

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

配置(从figuration):加载配置文件(如 tox.ini),解析命令行参数,读取系统环境变量等

打包(packaging):可选的,对于带有 setup.py 文件的项目,可以在这步去生成它的源发行版

创建虚拟环境:默认使用 virtualenv 来创建虚拟环境,并根据配置项中的“deps”安装所需的依赖项,然后执行配置好的命令(commands)

报告(report):汇总所有虚拟环境的运行结果并罗列出来

5、小结

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527582.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 添加inotify扩展,php inotify 扩展的安装

一、安装1) 从内核和目录里面查看是否支持inotify[rootnfs01 ~]# uname -r2.6.32-573.el6.x86_64[rootnfs01 ~]#** ls -l /proc/sys/fs/inotify/** -→主要查看下面有没有三个目录总用量 0-rw-r--r-- 1 root root 0 1月 21 13:03 max_queued_events-rw-r--r-- 1 root root…

简述python执行原理_Python程序的执行原理(1)(2)

Python程序的执行原理(1)(2) 1. 过程概述 Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。 2. 字节码 字节码在Python虚拟机程序…

python文本特征选择,机器学习--特征选择(Python实现)

特征选择就是从原始特征中选取一些最有效的特征来降低维度,,提高模型泛化能力减低过拟合的过程,主要目的是剔除掉无关特征和冗余特征,选出最优特征子集;常见的特征选择方法可以分为3类:过滤式(filter)、包裹式(wrapper…

用python画风车_python接口自动化()一)(实现一款简单的接口自动化框架)

python接口自动化一(设计一款自己的接口自动化框架) 一、起因: 前面学习过了python接口requests来进行接口测试,但是在框架选择上还是选择的unittest。当接口数量不怎么多时还好,但是当接口的量上去了,一切…

系统新模块增加需要哪些步骤_防锈高效型干式地暖模块解决了装修施工配合的哪些难点?...

通过前面的讲解,我们知道铝板干式地暖末端应用于地暖、辐射冷暖等系统的技术优势非常明显,即省层高、省费用、效果好、空调舒适、业主使用满意度高等,随着水泥黄沙的大幅涨价,其成本优势也突显出来,越来越多的暖通公司…

python爬取网站数据步骤_python怎么爬取数据

在学习python的过程中,学会获取网站的内容是我们必须要掌握的知识和技能,今天就分享一下爬虫的基本流程,只有了解了过程,我们再慢慢一步步的去掌握它所包含的知识Python网络爬虫大概需要以下几个步骤: 一、获取网站的地…

matlab chan算法定位,MATLAB实现基于Chan氏算法的三维TDOA定位

% 功能:基于chan算法的TDOA三维定位function [zp] Chan_3(Noise,MS)%基站数目BSN 7;%基站位置,每一列为一个基站位置BS [0, 2*sqrt(3), -2*sqrt(3), sqrt(3), -sqrt(3), -sqrt(3), sqrt(3);0, 0, 0, 3, 3, -3, -3;0, 0, 0, 0, 2, 2, 0];%无噪声情况下BS到MS的距离…

Redis源码精读:字符串

文章目录 前言代码位置核心类型SDS结构获取sds字符串的元数据的宏获取字符串长度重新设置sds长度创建字符串感悟最后 前言 Redis中实现了sds(simple dynamic string)这种字符串,它比c语言标准库的char*字符串更加实用 代码位置 src/sdc.h …

python自动化测试脚本可以测php吗_python unittest实现api自动化测试_python

这篇文章主要为大家详细介绍了python unittest实现api自动化测试的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目测试对于一个项目的重要性,大家应该都知道吧,写python的朋友,应该都写过自动化测试脚本。…

Linux服务器版本鼠标,安装GPM给Linux虚拟控制台提供配置鼠标支持

给你的 Linux 系统安装 GPM,这样我们就可以在虚拟控制台中配置鼠标,比如进行复制与粘贴操作。GPM 是一个守护程序,是通用鼠标的首字母的缩写,它可以帮助你配置 Linux 虚拟控制台的鼠标支持。GPM 在以下场景中特别有用:…

valgrind 内存泄漏_应用 AddressSanitizer 发现程序内存错误

应用 AddressSanitizer 发现程序内存错误作为 C/ C 工程师,在开发过程中会遇到各类问题,最常见便是内存使用问题,比如,越界,泄漏。过去常用的工具是 Valgrind,但使用 Valgrind 最大问题是它会极大地降低程序…

配置文件存int类型_Redis详解(五)------ redis的五大数据类型实现原理

> 本系列教程持续更新,可以微信搜索「 IT可乐 」第一时间阅读。回复《电子书》有我为大家特别筛选的书籍资料前面两篇博客,第一篇介绍了五大数据类型的基本用法,第二篇介绍了Redis底层的六种数据结构。在Redis中,并没有直接使用…

java list 占用内存不释放_性能不打折,内存占用减少90%,Facebook提出极致模型压缩方法Quant-Noise...

对于动辄上百 M 大小的神经网络来说,模型压缩能够减少它们的内存占用、通信带宽和计算复杂度等,以便更好地进行应用部署。最近,来自 Facebook AI 的研究者提出了一种新的模型量化压缩技术 Quant-Noise,让神经网络在不降低性能的前…

苹果系统安装python环境_如何在mac下配置python虚拟环境

安装python虚拟环境核心目的就是为了复制一个python环境,这样新项目下载的所有包,都会存放在虚拟环境下的python site-package 中 首先安装 1. sudo pip install virtualenv # 安装虚拟环境 2. sudo pip install virtualenvwrapper # 安装虚拟环境扩展包 3. vim .bash_profile …

linux程序无法获取cpu资源,Linux系统编程获取系统的CPU资源

还是纯干货&#xff0c;代码拿来&#xff1a;#include #include #include #include #include #include #include void work(){FILE *f;int i;double x 4.5;f tmpfile();for(i 0; i < 10000;i){fprintf(f,"Do some output\n");if (ferror(f)){fprintf(stderr,&q…

dbnetlib sqlserver不存在或拒绝访问_404:对不起,您访问的网页不存在

404&#xff1a;对不起您访问的网页不存在https://www.zhihu.com/video/1101123296195723264你可能在上网时也好奇过&#xff0c;为什么点开一个无法显示信息的页面&#xff0c;上面会出现数字404&#xff1f;要解释这个问题&#xff0c;我们需要从互联网诞生之初说起。20世纪8…

linux中控和安卓中控哪个比较好,原厂中控和改装中控有什么区别?哪个更好?...

很多人都喜欢车辆上有一个大屏的中控。那种大屏的中控不仅功能很多&#xff0c;而且还很实用。但是有很多车需要高配才能有中控。而且还需要加钱。很多人在买车的时候都会选择一些低配的车&#xff0c;然后自己去安装中控。有些人认为原厂的中控不仅价格贵&#xff0c;而且还有…

bufferedreader读取中文乱码_python之pandas模块关于csv文件乱码问题解决

介绍相信部分小伙伴们在处理windows系统生成的csv文件时会遇到中文显示乱码的问题&#xff0c;尤其是使用Excel打开这类文件时这类问题尤为突出。解决如图&#xff0c;我们通过Excel工具打开该csv文件时&#xff0c;中文展示为乱码。此时&#xff0c;只需要我们通过功能强大的数…

linux mint python3.6,Linux 上如何安装并切换最新版本的 Python 3.6

原标题&#xff1a;Linux 上如何安装并切换最新版本的 Python 3.6如果你安装了 Linux 系统&#xff0c;正在学习 Python 并想要使用最新的版本的话&#xff0c;那么这篇文章就是为你而写的。-- ShekinPython是 Linux 中一种最流行的编程语言。它被写成了各种工具和库。除此之外…

centos 卸载软件_Linux服务器运维必备技能 软件包和启动项超详细整理

一、RedHat/CentOS包管理1. 包管理工具RPM(1) 简介最早用在 RedHat的包管理器&#xff0c;现在已经成为Linux常见的包管理系统。RPM包有两种类型&#xff1a;二进制RPM包源码RPM包可以在www.rpmfind.net网站查询软件包&#xff0c;也可以查到其依赖项&#xff1a;(2) RPM包命名…