亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

淺談Python任務(wù)自動化工具Tox基本用法

 更新時間:2022年06月22日 11:37:01   作者:馬踏飛燕&lin_li  
這篇文章主要介紹了淺談Python任務(wù)自動化工具Tox,tox 是一個管理測試虛擬環(huán)境的命令行工具, 它已存在多年且廣被開發(fā)者們使用,對Python任務(wù)自動化工具Tox基本用法感興趣的朋友一起看看吧

淺談Python任務(wù)自動化工具Tox

引言:

最近在搜集github上包含測試樣例的Python項目,并試圖在docker環(huán)境下跑通這些項目,發(fā)現(xiàn)這些項目主要使用的測試框架有 : unittest, pytest ,nosetest。還有一些用到了自動化工具Tox,所以簡單了解了一下。

簡介:

Command line driven CI frontend and development task automation tool
命令行驅(qū)動的 CI 前端和開發(fā)任務(wù)自動化工具

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

其核心作用是支持創(chuàng)建隔離的 Python 環(huán)境,在里面可以安裝不同版本的 Python 解釋器與各種依賴庫,以此方便開發(fā)者做自動化測試、打包、持續(xù)集成等事情。

簡單來說,tox 是一個管理測試虛擬環(huán)境的命令行工具。 它已存在多年且廣被開發(fā)者們使用,例如,著名的云計算平臺 OpenStack 也采用了它,作為最基礎(chǔ)的測試工具之一。

基本用法:

安裝

pip install tox

將有關(guān)項目和希望項目在其中運行的測試環(huán)境的基本信息放入應(yīng)位于文件旁邊的文件中: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

若要打包、安裝和測試項目,現(xiàn)在可以在命令提示符下鍵入:

tox

配置文件:

tox 的行為由其配置文件控制,當前它支持 3 種配置文件:

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

我們以**python-project-wizard**項目為例,看一下開發(fā)人員寫的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)文件是一種非常原始的基礎(chǔ)形式,但各家有各家的用法,而且它最多只能解決一層嵌套。只適合非常非常簡單的配置文件,一旦需要兩層嵌套,或需要數(shù)組,就力不從心了。
  • 終于,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]及其下方內(nèi)容組成一個章節(jié)(section),每個章節(jié)間使用空行作間隔。
  • [tox]下面是全局性的配置項
  • [xxx:yyy]繼承 xxx 的配置,同時其自身配置項的優(yōu)先級更高。
  • 對于每個虛擬環(huán)境,可用的配置項很多,例如常用的有:description(描述信息)、basepython(Python解釋器版本)、deps(環(huán)境依賴項)、commands(命令語句)等等。

tox 的工作流程:

  • 配置(從figuration):加載配置文件(如 tox.ini),解析命令行參數(shù),讀取系統(tǒng)環(huán)境變量等
  • 打包(packaging):可選的,對于帶有 setup.py 文件的項目,可以在這步去生成它的源發(fā)行版
  • 創(chuàng)建虛擬環(huán)境:默認使用 virtualenv 來創(chuàng)建虛擬環(huán)境,并根據(jù)配置項中的“deps”安裝所需的依賴項,然后執(zhí)行配置好的命令(commands)
  • 報告(report):匯總所有虛擬環(huán)境的運行結(jié)果并羅列出來 安裝使用:

安裝:

使用tox-quickstart快速生成tox.ini,也可以根據(jù)模板手寫tox.ini文件

使用:

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

小結(jié):

tox 本身定位是一個測試工具,它試圖令 Python 測試工作變得自動化、標準化與流程化。但跟 unittest 和 pytest 這些測試框架不同,它作用的是代碼層面之外的事情,是一種項目級的工具。因此,它需要跟這些測試框架相結(jié)合,或者同時處理多種自動化任務(wù)(如跑 pep8、測代碼覆蓋率、生成文檔等等),這樣才能更好地發(fā)揮它的價值。

它的一大特色在于創(chuàng)建/管理虛擬環(huán)境,但這只是為了方便測試而使用的手段,因此相比其它可管理虛擬環(huán)境的工具,如 Virtualenvwrapper、conda、pipenv、poetry,它在某些方面就存在著不足。

到此這篇關(guān)于淺談Python任務(wù)自動化工具Tox的文章就介紹到這了,更多相關(guān)Python任務(wù)自動化工具Tox內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何用python繪制散點圖

    如何用python繪制散點圖

    這篇文章主要介紹了如何用python繪制散點圖問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 現(xiàn)代Python編程的四個關(guān)鍵點你知道幾個

    現(xiàn)代Python編程的四個關(guān)鍵點你知道幾個

    這篇文章主要為大家詳細介紹了Python編程的四個關(guān)鍵點,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • matplotlib命令與格式之tick坐標軸日期格式(設(shè)置日期主副刻度)

    matplotlib命令與格式之tick坐標軸日期格式(設(shè)置日期主副刻度)

    這篇文章主要介紹了matplotlib命令與格式之tick坐標軸日期格式(設(shè)置日期主副刻度),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python中文件遍歷的兩種方法

    Python中文件遍歷的兩種方法

    這篇文章主要介紹了Python中文件遍歷的兩種方法,使用的OS模塊的os.walk和os.listdir實現(xiàn),需要的朋友可以參考下
    2014-06-06
  • Pycharm 設(shè)置默認解釋器路徑和編碼格式的操作

    Pycharm 設(shè)置默認解釋器路徑和編碼格式的操作

    這篇文章主要介紹了Pycharm 設(shè)置默認解釋器路徑和編碼格式的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • 一文搞懂Python的hasattr()、getattr()、setattr()?函數(shù)用法

    一文搞懂Python的hasattr()、getattr()、setattr()?函數(shù)用法

    python中的getattr()、setattr()、hasattr()函數(shù)均是對類屬性或方法的操作,其中g(shù)etattr()用于獲取類或?qū)嵗兄付ǚ椒ǐ@取屬性的值,setattr()用于設(shè)置類或?qū)嵗袑傩曰蚍椒?hasattr()用于判斷類或?qū)嵗惺欠翊嬖谥付ǖ膶傩曰蚍椒?本文通過例子給大家詳解,一起看看吧
    2022-04-04
  • Anaconda安裝以及修改環(huán)境默認位置圖文教程

    Anaconda安裝以及修改環(huán)境默認位置圖文教程

    Anaconda是一個用于科學計算的Python發(fā)行版,支持Linux,Mac, Windows, 包含了眾多流行的科學計算、數(shù)據(jù)分析的 Python 包,下面這篇文章主要給大家介紹了關(guān)于Anaconda安裝以及修改環(huán)境默認位置的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • 詳解python:time模塊用法

    詳解python:time模塊用法

    這篇文章主要介紹了python:time模塊用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • 深入理解Python中的內(nèi)置常量

    深入理解Python中的內(nèi)置常量

    這篇文章主要跟大家介紹了關(guān)于Python中內(nèi)置常量的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看吧。
    2017-05-05
  • python隨機在一張圖像上截取任意大小圖片的方法

    python隨機在一張圖像上截取任意大小圖片的方法

    今天小編就為大家分享一篇python隨機在一張圖像上截取任意大小圖片的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01

最新評論