精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Python 任務(wù)自動(dòng)化工具 tox 教程

開(kāi)發(fā) 后端
一個(gè)神奇的測(cè)試工具 tox,本文將對(duì)它做簡(jiǎn)單的介紹,說(shuō)不定大家在開(kāi)發(fā)項(xiàng)目時(shí)能夠用得上。

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

tox 的項(xiàng)目地址是:https://github.com/tox-dev/tox

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

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

1、tox 能做什么?

細(xì)分的用途包括:

  •  創(chuàng)建開(kāi)發(fā)環(huán)境
  •  運(yùn)行靜態(tài)代碼分析與測(cè)試工具
  •  自動(dòng)化構(gòu)建包
  •  針對(duì) tox 構(gòu)建的軟件包運(yùn)行測(cè)試
  •  檢查軟件包是否能在不同的 Python 版本/解釋器中順利安裝
  •  統(tǒng)一持續(xù)集成(CI)和基于命令行的測(cè)試
  •  創(chuàng)建和部署項(xiàng)目文檔
  •  將軟件包發(fā)布到 PyPI 或任何其它平臺(tái)

tox 官方文檔中列出了 40 余種使用場(chǎng)景的示例,詳細(xì)的列表可查看:https://tox.readthedocs.io/en/latest/examples.html

2、tox 怎么配置?

關(guān)于它的用法:使用pip install tox 安裝,使用tox 運(yùn)行全部測(cè)試環(huán)境,和tox -e envname 運(yùn)行指定的環(huán)境。還有不少的命令行參數(shù),通過(guò)tox -h 查看。

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

  1.  pyproject.toml
  2.  tox.ini
  3.  setup.cfg

以 tox 項(xiàng)目自己的 tox.ini 配置內(nèi)容為例,可以看到它是這樣配置的(https://github.com/tox-dev/tox/blob/master/tox.ini):

每個(gè)[xxx]及其下方內(nèi)容組成一個(gè)章節(jié)(section),每個(gè)章節(jié)間使用空行作間隔。

[tox]下面是全局性的配置項(xiàng),envlist 字段定義了 tox 去操作的環(huán)境。[xxx]下面是 xxx 虛擬環(huán)境的配置項(xiàng),[xxx:yyy]繼承 xxx 的配置,同時(shí)其自身配置項(xiàng)的優(yōu)先級(jí)更高。

對(duì)于每個(gè)虛擬環(huán)境,可用的配置項(xiàng)很多,例如常用的有:description(描述信息)、basepython(Python解釋器版本)、deps(環(huán)境依賴項(xiàng))、commands(命令語(yǔ)句)等等。

tox 還支持作變量替換,它提供了一些內(nèi)置的基礎(chǔ)變量(全局的或?qū)τ谔摂M環(huán)境的):{toxinidir}、{homedir}、{envname}、{envdir}等等。

除了基礎(chǔ)性的變量替換,它還支持這些高級(jí)用法:

  •  取操作系統(tǒng)的環(huán)境變量:{env:KEY},效果等同于os.environ['KEY'] 。可以變化成:{env:KEY:DEFAULTVALUE},在取不到環(huán)境變量時(shí)則使用默認(rèn)值;{env:KEY:{env:DEFAULT_OF_KEY}},達(dá)到 if-else 的取值效果

   傳遞命令行參數(shù):{posargs:DEFAULTS},當(dāng)沒(méi)有命令行參數(shù)時(shí),使用 DEFAULTS 值。使用方式:tox arg1 arg2 傳兩個(gè)參,或者tox -- --opt1 arg1 將“-- opt1 arg1”作為整體傳入。

  •  章節(jié)間傳值:{[sectionname]valuename},不同章節(jié)的內(nèi)容可以傳遞使用。
  •  交互式控制臺(tái)注入:{tty:ON_VALUE:OFF_VALUE},當(dāng)交互式 shell 控制臺(tái)開(kāi)啟時(shí),使用第一個(gè)值,否則使用第二個(gè)。pytest 在使用“--pdb”時(shí),是這樣的例子。

花括號(hào)“{}”除了可以做變量替換使用,它還可以作為“或關(guān)系”判斷的取值。直接看下面的例子:

[tox]
envlist = {py27,py36}-django{15,16}

{py27,py36}-django{15,16} 的 2 組花括號(hào)內(nèi)各有 2 個(gè)值,它們實(shí)際可以組合成 4 個(gè)環(huán)境:py27-django15、py27-django16、py36-django15、py36-django16。

關(guān)于 tox 有哪些配置項(xiàng)、使用條件、什么含義、高級(jí)用法等等內(nèi)容,可在官方文檔中查看:https://tox.readthedocs.io/en/latest/config.html

3、tox 的插件化

除了自身強(qiáng)大的可配置性,tox 還具有很強(qiáng)的可擴(kuò)展性,它是可插拔的(pluggable),圍繞它產(chǎn)生了一個(gè)極為豐富的插件生態(tài)。

使用pip search tox ,可以看到數(shù)量眾多的“tox-”開(kāi)頭的庫(kù),它們都是 tox 的插件包。其中不乏 setuptools、pipenv、conda、travis、pytest、docker 等被大家熟知的名字。

tox 開(kāi)放了挺多的 API 接口,方便其他人定制開(kāi)發(fā)插件。

4、tox 的工作流程

接下來(lái)看看 tox 是怎么運(yùn)作的:

其工作流程中主要的環(huán)節(jié)有:

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

5、小結(jié)

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

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

tox 還有強(qiáng)大的可配置性與豐富的插件支持,這使得它在運(yùn)用上具有很大的可能性與自由度。因此,不少忠實(shí)開(kāi)發(fā)者仍在持續(xù)地在使用它,比如,我剛翻譯好的系列文章的作者就是它的維護(hù)者之一。

最后還需補(bǔ)充一點(diǎn),tox 使用配置文件作驅(qū)動(dòng),但配置文件還是挺繁瑣的,因此有人開(kāi)發(fā)了一個(gè)跟 tox 相似的nox,使用 Python 文件來(lái)做配置。這個(gè)項(xiàng)目也很受歡迎,吸引了很多項(xiàng)目投入其門下,例如 pipx、urllib3、Salt 等等。對(duì)該項(xiàng)目感興趣的話,請(qǐng)查看:https://nox.thea.codes/en/stable。

責(zé)任編輯:龐桂玉 來(lái)源: Python編程
相關(guān)推薦

2021-05-19 17:04:29

Python阿里自動(dòng)化工具

2024-06-13 12:11:13

2020-03-31 10:58:35

網(wǎng)絡(luò)自動(dòng)化SD-WAN軟件定義網(wǎng)絡(luò)

2010-05-26 16:21:25

2024-03-08 13:11:05

前端自動(dòng)化工具

2010-12-06 09:56:52

數(shù)據(jù)中心網(wǎng)絡(luò)

2024-04-08 11:45:11

Pythonpyinfra編程語(yǔ)言

2013-12-19 09:56:12

云計(jì)算自動(dòng)化工具云計(jì)算管理

2021-05-08 09:00:53

AI 工具人工智能

2024-06-12 12:36:48

CrontabPython庫(kù)

2012-04-16 10:12:55

云計(jì)算自動(dòng)化

2020-04-26 15:31:58

DevOps自動(dòng)化工具

2019-09-18 20:39:07

數(shù)據(jù)科學(xué)自動(dòng)化工具機(jī)器學(xué)習(xí)

2010-12-06 09:54:09

網(wǎng)絡(luò)自動(dòng)化

2021-02-22 18:50:03

Ansible系統(tǒng)運(yùn)維

2021-04-30 13:40:55

Linux自動(dòng)化工具開(kāi)源

2019-12-11 11:54:37

IT工具云計(jì)算

2023-01-07 23:24:00

python格式化工具

2020-12-23 10:43:40

云計(jì)算基礎(chǔ)設(shè)施自動(dòng)化工具

2010-06-25 11:04:59

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

一区二区三区久久| 久久亚洲色图| 亚洲电影av在线| 97在线免费公开视频| 黄色av网站在线免费观看| 免费不卡在线观看| 欧美精品福利在线| 蜜桃av免费看| www.久久热| 欧美日韩亚洲精品内裤| 一区二区欧美日韩| 蜜臀久久99精品久久久| 免费不卡在线视频| 51ⅴ精品国产91久久久久久| 永久免费未视频| 久久夜色电影| 制服.丝袜.亚洲.中文.综合| 大j8黑人w巨大888a片| 日本在线看片免费人成视1000| 成人天堂资源www在线| 国产精品偷伦免费视频观看的| 午夜激情福利网| 欧美精选一区二区三区| 亚洲精品在线免费观看视频| 人人干人人干人人| 日本不卡网站| 亚洲综合区在线| 亚洲国产婷婷香蕉久久久久久99| 无码国产精品96久久久久| 狠狠色丁香久久婷婷综| 国产精品高潮在线| 亚洲久久在线观看| 黄色成人在线网站| 麻豆国产va免费精品高清在线| 女女互磨互喷水高潮les呻吟| 成人高潮a毛片免费观看网站| 欧美另类z0zxhd电影| 农村妇女精品一二区| a级片在线免费观看| 最新中文字幕一区二区三区| 日韩欧美一区二区三区四区| 五月天婷婷激情网| gogo大胆日本视频一区| 51国偷自产一区二区三区 | 日韩片欧美片| 亚洲老头老太hd| 中文字幕在线播放视频| 国产精品乱战久久久| 日韩欧美亚洲国产精品字幕久久久 | 欧美成人二区| 中文字幕亚洲一区二区va在线| 日韩中文字幕一区| av福利精品| 中文字幕成人在线观看| 亚洲欧洲精品在线观看| 欧美a免费在线| 国产精品第13页| 手机成人av在线| av理论在线观看| 亚洲免费视频中文字幕| 亚洲精品在线免费看| 无遮挡的视频在线观看| 国产精品福利av| 国产又大又长又粗又黄| 羞羞网站在线免费观看| 亚洲午夜久久久久久久久电影院| 国产精品入口芒果| 欧美裸体视频| 欧美视频精品在线观看| 中文字幕12页| 成人福利一区| 亚洲人成在线播放| 大地资源高清在线视频观看| 国内精品久久久久久久影视蜜臀| 欧美国产亚洲视频| 国产午夜福利片| 噜噜噜在线观看免费视频日韩| 日本欧美一二三区| 一区二区三区亚洲视频| 国产a视频精品免费观看| 精品久久一区二区三区蜜桃| 精品福利视频导航大全| 国产精品嫩草影院com| 久久视频免费在线| 3344国产永久在线观看视频| 色综合激情久久| 在线观看岛国av| 99re8这里有精品热视频8在线| 亚洲国语精品自产拍在线观看| 一级片视频免费看| 综合久久精品| 日韩美女主播视频| 国产精品污视频| 97国产一区二区| 亚洲图片小说在线| aa级大片免费在线观看| 欧美伊人久久久久久午夜久久久久| 特级西西444www| 图片婷婷一区| 久久精品中文字幕电影| 青青国产在线观看| 国产乱码字幕精品高清av| 麻豆精品蜜桃一区二区三区| 黄色在线免费网站| 色综合久久综合网欧美综合网| 日韩视频在线观看一区二区三区| 超碰精品在线| 亚洲午夜激情免费视频| 国产午夜精品一区二区理论影院| 日本人妖一区二区| 精品一区二区久久久久久久网站| 国产日产一区二区三区| 色综合色狠狠天天综合色| 手机在线播放av| 久久久影院免费| 97在线观看免费| 国产剧情精品在线| 国产日产欧美一区二区视频| 国产玉足脚交久久欧美| 成人黄色毛片| 亚洲午夜国产成人av电影男同| 久久亚洲成人av| 久久99精品国产| 日韩一区不卡| 免费观看亚洲| 亚洲国产精品福利| 成人免费看片98| 国产在线播精品第三| 亚洲精品在线免费| 韩国三级一区| 亚洲精品视频中文字幕| 日本三级免费看| 国产福利一区二区| 成年人免费观看的视频| 福利视频亚洲| 怡红院精品视频| 国产精品suv一区| 99精品欧美一区二区三区小说| 国产乱子伦精品无码专区| 秋霞午夜一区二区三区视频| 免费99精品国产自在在线| 91精品国产乱码久久久| 国产精品入口麻豆原神| 日本肉体xxxx裸体xxx免费| 精品欧美久久| 国产精品久久久久7777婷婷| 国产一区电影| 在线免费观看视频一区| 九九热免费在线| 蜜臀av一级做a爰片久久| 无遮挡亚洲一区| 久久er热在这里只有精品66| 日韩在线观看网址| 国产免费福利视频| 亚洲视频1区2区| 亚洲 自拍 另类 欧美 丝袜| 亚洲无线一线二线三线区别av| 91亚色免费| 草草视频在线观看| 日韩av在线免费观看| 色网站在线播放| 久久精品亚洲一区二区三区浴池| 女人和拘做爰正片视频| 国产亚洲一区二区三区不卡| 国产精品嫩草影院一区二区| 久久精品视频免费看| 日韩一区二区三免费高清| 青青草原国产视频| a在线欧美一区| 人妻有码中文字幕| 第一sis亚洲原创| 亚洲一区制服诱惑| av小说在线播放| 亚洲网站在线播放| 国产毛片在线视频| 午夜亚洲福利老司机| 亚洲黄色免费视频| 国产一区二区在线免费观看| 日韩欧美精品免费| 国产欧美日韩精品一区二区免费 | 国产91ⅴ在线精品免费观看| 国内精品在线视频| 欧美日韩电影在线| 久久精品国产亚洲AV无码男同| 2021国产精品久久精品| 青青草原国产在线视频| 亚洲三级观看| 中文字幕剧情在线观看一区| 精品国产乱子伦一区二区| 国产精品久久久久高潮| 黄页在线观看免费| 尤物精品国产第一福利三区| 亚洲精品无码久久久| 色狠狠综合天天综合综合| 中文字幕av免费在线观看| 久久久久久免费| 丰满饥渴老女人hd| 日韩成人一区二区三区在线观看| 成人免费看片'免费看| 国产欧美日韩| 精品免费日产一区一区三区免费| 欧美美女被草| 欧美一级视频免费在线观看| 成人片在线看| 国产一区二区三区高清在线观看| 亚洲精品国产手机| 欧美日本在线观看| 国产婷婷色一区二区在线观看| 亚洲精品国产成人久久av盗摄| 无码一区二区三区在线| av一区二区三区| 麻豆网站免费观看| 视频一区二区欧美| 日韩xxxx视频| 女人色偷偷aa久久天堂| 亚洲成人18| 蜜桃a∨噜噜一区二区三区| 国产高清精品一区二区| 国产精品久久久久久av公交车| 日韩美女在线看| 在线看的毛片| 97久久久久久| 超碰中文在线| 欧美黑人性视频| 黄色av电影在线观看| 国产亚洲免费的视频看| 日本人妖在线| 亚洲精品v天堂中文字幕| 亚洲国产精品久久久久久6q| 欧美肥胖老妇做爰| 岳乳丰满一区二区三区| 欧洲国产伦久久久久久久| 五月婷婷色丁香| 欧美日韩另类字幕中文| 国产黄色片免费看| 精品国产乱码久久久久酒店| 日韩和一区二区| 亚洲高清免费观看| 激情综合网五月婷婷| 一区二区三区欧美日韩| 麻豆chinese极品少妇| 亚洲精品国产无套在线观| 丰满少妇高潮久久三区| 一区二区三区在线免费播放| 校园春色 亚洲| 亚洲精品va在线观看| 久草网站在线观看| 亚洲一区二区三区不卡国产欧美| 久草资源在线视频| 亚洲国产日产av| 香蕉视频一区二区| 欧美午夜影院在线视频| 亚洲欧美一区二区三区在线观看| 日本韩国精品一区二区在线观看| 免费观看日批视频| 欧美日韩一区成人| 国产精品无码久久av| 欧美不卡一区二区三区四区| 成人免费公开视频| 精品一区二区三区电影| 国产在线你懂得| 日韩一区二区欧美| v天堂福利视频在线观看| 欧美精品18videosex性欧美| av在线播放资源| 国产国语刺激对白av不卡| 欧美成人毛片| 爱情岛论坛亚洲入口| 色婷婷狠狠五月综合天色拍| 日韩高清av电影| 中国成人一区| 波多野结衣乳巨码无在线| 丝袜亚洲另类丝袜在线| 99re精彩视频| 成人午夜电影网站| 亚洲久久久久久久| 亚洲同性gay激情无套| 日本网站在线免费观看| 91久久精品国产91性色tv| 国产免费视频一区二区三区| 亚洲第一色中文字幕| 福利视频在线看| 欧美激情一区二区三区在线视频观看| 美女在线视频免费| 国产欧美婷婷中文| 久久综合社区| 一本一本a久久| 日韩视频免费| 欧美性受xxxxxx黑人xyx性爽| 成人午夜大片免费观看| 中文天堂资源在线| 亚洲第一在线综合网站| 中文字幕第99页| 亚洲精品国精品久久99热一| 天堂中文8资源在线8| 欧美激情欧美狂野欧美精品 | 国产精品v亚洲精品v日韩精品 | 一区在线电影| 99精品国产在热久久婷婷| mm131国产精品| 91在线视频播放地址| 多男操一女视频| 一本色道久久加勒比精品| 国产成人精品白浆久久69| 国产一区二区三区在线观看网站| 色噜噜狠狠狠综合欧洲色8| 国产噜噜噜噜噜久久久久久久久| 加勒比久久高清| 18视频在线观看娇喘| 日日夜夜精品视频免费| 妖精视频一区二区| 亚洲色欲色欲www在线观看| 国产真人无遮挡作爱免费视频| 精品国产亚洲一区二区三区在线观看| 日本中文字幕电影在线免费观看| 2019国产精品自在线拍国产不卡| 麻豆久久一区| 人人妻人人澡人人爽精品欧美一区 | 久久99热这里只有精品国产| 巨胸喷奶水www久久久免费动漫| 精品久久精品久久| 91久久视频| 亚洲女则毛耸耸bbw| 亚洲人吸女人奶水| 一二三区中文字幕| 中文字幕国产亚洲2019| 韩漫成人漫画| 欧美二级三级| av成人毛片| 久久久国产精品无码| 亚洲国产日日夜夜| 黄色av小说在线观看| 欧美俄罗斯性视频| 久久久久毛片免费观看| 日韩视频在线观看视频| 精品一区二区三区在线播放视频 | 亚洲国产成人av| www.97av.com| 精品自拍视频在线观看| 久久久久毛片免费观看| 日本福利视频导航| 韩国欧美国产一区| 污污的视频在线免费观看| 欧美精选午夜久久久乱码6080| 97视频在线观看网站| 国产精品久久久久av免费| 日韩一区二区在线免费| 99热一区二区| 亚洲婷婷综合色高清在线| 国产精品玖玖玖| 欧美成人免费在线视频| 亚洲一区二区三区在线免费| av动漫在线播放| 成人美女在线观看| 在线观看亚洲欧美| 亚洲日本欧美中文幕| 国产精品天堂蜜av在线播放| 一区二区三区欧美成人| 国产一区二区91| 国产真实的和子乱拍在线观看| 亚洲精品电影在线观看| 欧美二三四区| 宅男噜噜99国产精品观看免费| 国产资源精品在线观看| 久久精品美女视频| 亚洲欧美一区二区激情| 欧美一级做a| 国产精品一色哟哟| 久久久综合激的五月天| 中文字幕精品一区二区精| 大量国产精品视频| 久久超级碰碰| 九一精品在线观看| 亚洲黄色免费电影| 五月天婷婷激情网| 91精品美女在线| 亚洲人成人一区二区三区| 蜜桃传媒一区二区亚洲| 欧美一区日本一区韩国一区| а√天堂中文在线资源8| 亚洲国产午夜伦理片大全在线观看网站 | 97在线中文字幕| 午夜宅男久久久| 51精品免费网站| 精品亚洲aⅴ在线观看| 日韩大陆av| 奇米影视亚洲色图| 国产精品高潮久久久久无| 欧美 日韩 国产 在线| 国产精品女人网站| 伊人久久成人| 中国1级黄色片| 亚洲第一福利在线观看| 久久人体av| 国产精品后入内射日本在线观看| 国产精品大尺度| 久久免费看视频| 国产成人看片| 国产一区在线观看麻豆| 国产伦精品一区二区三区视频网站|