返回顶部
首页 > 资讯 > 后端开发 > Python >浅谈Python任务自动化工具Tox基本用法
  • 896
分享到

浅谈Python任务自动化工具Tox基本用法

2024-04-02 19:04:59 896人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录浅谈python任务自动化工具Tox引言:简介:基本用法:配置文件:tox 的工作流程:安装:使用:小结:浅谈Python任务自动化工具Tox 引言: 最近在搜集GitHub上包

浅谈Python任务自动化工具Tox

引言:

最近在搜集GitHub上包含测试样例的Python项目,并试图在Docker环境下跑通这些项目,发现这些项目主要使用的测试框架有 : unittest, pytest ,nosetest。还有一些用到了自动化工具Tox,所以简单了解了一下。

简介:

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

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

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

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

基本用法:

安装

pip install tox

将有关项目和希望项目在其中运行的测试环境的基本信息放入应位于文件旁边的文件中:tox.ini setup.py

# content of: tox.ini , put in same dir as setup.py
[tox]
envlist = py27,py36
[testenv]
# install testing framework
# ... or install anything else you might need here
deps = pytest
# run the tests
# ... or run any other command line tool you need to run here
commands = pytest

若要打包、安装和测试项目,现在可以在命令提示符下键入:

tox

配置文件:

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

  • pyproject.toml
  • tox.ini
  • setup.cfg

我们以**python-project-wizard**项目为例,看一下开发人员写的tox配置文件。

pyproject.toml

[tool]
[tool.poetry]
name = "ppw"
version = "1.1.1"
description = "A Wizard to create a skeleton python project with up-to-date technology"
license = "BSD-3-Clause"
authors = ["Aaron Yang <aaron_yang@jieyu.ai>"]
readme = "README.md"
repository = "Https://github.com/zillionare/cookiecutter-pypackage"
documentation = "https://zillionare.github.io/cookiecutter-pypackage/"
keyWords = ['cookiecutter', 'template', 'package']
packages = [
  {include = "ppw"}
]

include = [
  '{{cookiecutter.project_slug}}*',
  'cookiecutter.JSON',
  'hooks/*'
]

[tool.poetry.dependencies]
python = ">=3.7,<4.0"
cookiecutter = "1.7.2"

pytest = {version = "^5.4.3", optional=true}
pytest-cookies = {version = "^0.5.1", optional=true}
pyyaml = {version="^5.3.1",optional=true}
mkdocs = {version="^1.1.2",optional=true}
mkdocs-material = {version="^6.1.7",optional=true}
mkdocs-material-extensions = {version="^1.0.1",optional=true}
pytest-cov = {version="^2.10.1",optional=true}
tox = {version = "^3.20.1", optional=true}
mkdocs-include-markdown-plugin = {version = "^2.8.0", optional=true}
fire = {version="^0.4.0", optional=true}
pre-commit = {version="^2.18.1",optional=true}

[tool.poetry.extras]
dev = [
  "pytest",
  "pytest-cookies",
  "pyyaml",
  "mkdocs",
  "mkdocs-material",
  "mkdocs-material-extensions",
  "pytest-cov",
  "tox",
  "mkdocs-include-markdown-plugin",
  "fire"
]

[tool.black]
line-length = 88
include = '\.pyi?$'
exclude = '''
/(
    \.eggs
  | \.git
  | \.hg
  | \.mypy_cache
  | \.tox
  | \.venv
  | _build
  | buck-out
  | build
  | dist
)/
'''

[build-system]
requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"

[tool.poetry.scripts]
ppw = 'ppw.cli:main'
  • INI(.ini)文件是一种非常原始的基础形式,但各家有各家的用法,而且它最多只能解决一层嵌套。只适合非常非常简单的配置文件,一旦需要两层嵌套,或需要数组,就力不从心了。
  • 终于,TOML(.toml)横空出世。它彻底放弃了括号或缩进的底层原理,而是采取了显式键名链的方式。

tox.ini

[tox]
envlist = py37,py38,py39,py310, docs
isolated_build = True

[gh-actions]
python =
    3.7: py37
    3.8: py38, docs
    3.9: py39
    3.10: py310

[testenv:docs]
basepython=python
allowlist_externals = mkdocs
commands= mkdocs build

[testenv]
extras =
    dev

setenv =
    PYTHONPATH = {toxinidir}

commands = pytest -s --cov-report=term-missing tests
  • 每个[xxx]及其下方内容组成一个章节(section),每个章节间使用空行作间隔。
  • [tox]下面是全局性的配置项
  • [xxx:yyy]继承 xxx 的配置,同时其自身配置项的优先级更高。
  • 对于每个虚拟环境,可用的配置项很多,例如常用的有:description(描述信息)、basepython(Python解释器版本)、deps(环境依赖项)、commands(命令语句)等等。

tox 的工作流程:

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

安装:

使用tox-quickstart快速生成tox.ini,也可以根据模板手写tox.ini文件

使用:

  • 配置好文件后,可以tox 直接运行,也可以tox -e test_api
  • 如果在其他目录下运行,则需要tox -c /test/tox.ini -c是指定配置文件的意思

小结:

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

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

到此这篇关于浅谈Python任务自动化工具Tox的文章就介绍到这了,更多相关Python任务自动化工具Tox内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 浅谈Python任务自动化工具Tox基本用法

本文链接: https://lsjlt.com/news/125999.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 浅谈Python任务自动化工具Tox基本用法
    目录浅谈Python任务自动化工具Tox引言:简介:基本用法:配置文件:tox 的工作流程:安装:使用:小结:浅谈Python任务自动化工具Tox 引言: 最近在搜集github上包...
    99+
    2024-04-02
  • Python任务自动化工具Tox怎么使用
    这篇文章主要讲解了“Python任务自动化工具Tox怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python任务自动化工具Tox怎么使用”吧!浅谈Python任务自动化工具Tox引...
    99+
    2023-07-02
  • Python 任务自动化工具nox 的配置与 API详情
    前言: NoxfileNox 默认在一个名为noxfile.py的文件中查找配置。在运行 nox 时,你可以使用 --noxfile参数指定其它的文件。 定义会话格式:session...
    99+
    2024-04-02
  • 浅谈python jieba分词模块的基本用法
    jieba(结巴)是一个强大的分词库,完美支持中文分词,本文对其基本用法做一个简要总结。 特点 支持三种分词模式: 精确模式,试图将句子最精确地切开,适合文本分析; 全模式,把句...
    99+
    2022-06-04
    分词 浅谈 模块
  • 用于基本社区管理任务自动化的Python脚本有哪些
    这篇文章主要讲解了“用于基本社区管理任务自动化的Python脚本有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“用于基本社区管理任务自动化的Python脚本有哪些”吧!tshirts.p...
    99+
    2023-06-15
  • 基于Python实现自动化文档整理工具
    目录引子应用场景源代码源代码说明效果如下所示引子 例如,一个人可能会在计算机上存储大量的照片、视频和文档文件,这些文件可能散落在不同的文件夹中,难以管理和查找。该程序可以根据文件类型...
    99+
    2023-05-18
    Python实现自动化文档整理 Python自动化文档整理 Python文档整理
  • 怎么使用Python自动化工具Fabric
    这篇文章主要讲解了“怎么使用Python自动化工具Fabric”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python自动化工具Fabric”吧!Fabric 主要用在应用部署与系...
    99+
    2023-06-16
  • 基于Python怎么实现自动化文档整理工具
    应用场景个人文件整理:个人在计算机上存储了大量的照片、视频和文档文件,这些文件可能分散在不同的文件夹中,使用该程序可以将这些文件整理到不同的文件夹中,并按照文件类型分类,方便管理和查找。批量文件处理:需要批量处理某个文件夹中的所有文件,如将...
    99+
    2023-05-14
    Python
  • Python基于pywinauto实现的自动化采集任务
    目录基于 pywinauto 的自动化采集任务实现技术代码总结基于 pywinauto 的自动化采集任务 实现技术代码总结 这是一篇学习总结, 前段时间写了一个基于 Python 的...
    99+
    2023-05-15
    Python pywinauto pywinauto 自动化采集
  • Python自动化工具tidevice的安装和使用
    本篇内容介绍了“Python自动化工具tidevice的安装和使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 1. 前言最近,...
    99+
    2023-06-15
  • python中Airtest自动化测试工具怎么用
    小编给大家分享一下python中Airtest自动化测试工具怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Airtest的官网介绍项目构成Airtest:是...
    99+
    2023-06-29
  • python自动化测试工具Helium使用示例
    目录前言示例总结前言 Helium工具是对Selenium的封装,将Selenium工具的使用变得更加简单。Selenium虽然好,但是在它的使用过程中元素的提取还是比较复杂的,不论...
    99+
    2024-04-02
  • Python命令行定时任务自动化工作流程
    目录1.使用场景2.库3.运行脚本4.脚本5.python常用的定时任务6.四种方法用python调用命令行1.使用场景 定时执行jmeter脚本,通过python定时器隔一段时间执...
    99+
    2023-05-17
    Python命令行定时任务 Python定时任务行
  • Python基于pywinauto怎么实现自动化采集任务
    本文小编为大家详细介绍“Python基于pywinauto怎么实现自动化采集任务”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python基于pywinauto怎么实现自动化采集任务”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一...
    99+
    2023-07-06
  • 常用的Python自动化运维工具有哪些
    常用的Python自动化运维工具有: Ansible:用于自动化配置、部署和编排任务的工具,可以通过SSH协议远程管理主机。 Fa...
    99+
    2023-10-22
    Python
  • Python 命令行解析工具 argparse基本用法
    在工作中,我们经常需要从命令行当中解析出指定的参数,而 Python 也提供了相应的标准库来做这件事情,比如 sys, optparse, getopt, argparse。这里面功...
    99+
    2022-12-24
    Python   argparse Python   argparse用法 Python 命令行解析工具 argparse
  • 十个 Python 脚本来自动化你的日常任务
    在这个自动化时代,我们有很多重复无聊的工作要做。 想想这些你不再需要一次又一次地做的无聊的事情,让它自动化,让你的生活更轻松。 那么在本文中,我将向您介绍 10 个 Python 自动化脚本,以使你的工作更加自动化,生活更加轻松。 因此,没...
    99+
    2023-05-14
    Python 脚本
  • Linux下自动化工具Parallel SSH的使用方法
    这篇文章将为大家详细讲解有关Linux下自动化工具Parallel SSH的使用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。parallel-ssh 是为小规模自动化而设计的异步并行的...
    99+
    2023-06-15
  • 42了解自动化运维工具 Saltstack 的基本用法,包括配置管理、批量执行
    Saltstack 是一款流行的自动化运维工具,可以用于配置管理、批量执行等任务。下面是 Saltstack 的基本用法教程。 安装 Saltstack 首先需要在控制节点上安装 Saltstack。具体安装方法可以参考 Saltstac...
    99+
    2023-10-26
    linux 运维 服务器
  • Python编程的简易版自动化工具ADB的工作原理以及用法
    本篇文章为大家展示了Python编程的简易版自动化工具ADB的工作原理以及用法,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。前言ADB,中文名安卓调试桥,它是一种功能多样的命令行工具,可用于执行各种...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作