<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
最近在蒐集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
)檔案是一種非常原始的基礎形式,但各家有各家的用法,而且它最多隻能解決一層巢狀。只適合非常非常簡單的組態檔,一旦需要兩層巢狀,或需要陣列,就力不從心了。.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
使用tox-quickstart快速生成tox.ini,也可以根據模板手寫tox.ini檔案
tox 本身定位是一個測試工具,它試圖令 Python 測試工作變得自動化、標準化與流程化。但跟 unittest 和 pytest 這些測試框架不同,它作用的是程式碼層面之外的事情,是一種專案級的工具。因此,它需要跟這些測試框架相結合,或者同時處理多種自動化任務(如跑 pep8、測程式碼覆蓋率、生成檔案等等),這樣才能更好地發揮它的價值。
它的一大特色在於建立/管理虛擬環境,但這只是為了方便測試而使用的手段,因此相比其它可管理虛擬環境的工具,如 Virtualenvwrapper、conda、pipenv、poetry,它在某些方面就存在著不足。
到此這篇關於淺談Python任務自動化工具Tox的文章就介紹到這了,更多相關Python任務自動化工具Tox內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45