托克斯Python任务自动化工具使用教程

  

<强> 1,托克斯能做什么?

  

细分的用途包括:

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

官方文档中列出了40余种使用场景的示例,详细的列表可查看:

  https://tox.readthedocs.io/en/latest/examples.html

  

 Python任务自动化工具托克斯使用教程

  托克斯

<强> 2,怎么配置?

  

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

  托克斯

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

  

pyproject.tomltox.inisetup.cfg   

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

  

 Python任务自动化工具托克斯使用教程

  

 Python任务自动化工具托克斯使用教程

  

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

  

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

  

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

  

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

  

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

  
      <李>取操作系统的环境变量:{env:关键},效果等同于操作系统。环境“关键”。可以变化成:{env:关键:DEFAULTVALUE},在取不到环境变量时则使用默认值;{env:关键:{env: DEFAULT_OF_KEY}},达到if - else的取值效果李   <李>传递命令行参数:}{posargs:缺省值,当没有命令行参数时,使用默认值。使用方式:托克斯__arg1最长传两个参,或者托克斯——opt1 __arg1将”——opt1 __arg1”作为整体传入。   <李>章节间传值:{[sectionname] valuename},不同章节的内容可以传递使用。   <李>交互式控制台注入:{tty: ON_VALUE: OFF_VALUE},当交互式壳控制台开启时,使用第一个值,否则使用第二个.pytest在使用”——pdb”时,是这样的例子。   
  

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

  
  (托克斯)


  envlist={py27, py36} django {15 16}

     

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

  

关于托克斯有哪些配置项,使用条件,什么含义,高级用法等等内容,可在官方文档中查看:

  https://tox.readthedocs.io/en/latest/config.html

  

<强> 3,托克斯的插件化

  

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

  托克斯

使用脉冲搜索,可以看到数量众多的托克斯”——“开头的库,它们都是托克斯的插件包。其中不乏setuptools, pipenv, conda,特拉维斯,pytest,码头工人等被大家熟知的名字。

  

 Python任务自动化工具托克斯使用教程

  托克斯

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

  

 Python任务自动化工具托克斯使用教程

  

<强> 4,托克斯的工作流程

  

接下来看托克斯看是怎么运作的:

  

托克斯Python任务自动化工具使用教程