tox工具

官方文檔 : http://tox.readthedocs.io/en/latest/example/basic.html
參考文檔 : http://www.tuicool.com/articles/UnQbyyv

tox是什么

tox是通用的虛擬環(huán)境管理和測試命令行工具吊履,旨在使Python測試標(biāo)準(zhǔn)化递览、自動化铐姚,可以使用它:

  • 用不同的Python版本和解釋器檢查你的軟件包是否正確安裝
  • 在不同的虛擬環(huán)境中運行測試孟辑,配置你選擇的測試工具
  • 作為持續(xù)集成服務(wù)器的前端徐块,大大減少了樣板和合并CI和基于shell的測試

安裝

$ pip install tox

在需要運行的python項目目錄中建立tox.ini文件此洲,在tox.ini文件中配置你的項目的基本信息和你想要的測試環(huán)境畅厢。
你還可以通過運行tox-quickstart來自動生成一個tox.ini文件。
在Python2.6和Python2.7的環(huán)境來安裝和測試你的項目元莫,只需運行命令:

tox

這將打包源碼(sdist-package)到當(dāng)前的項目赖阻,創(chuàng)建虛擬環(huán)境,并在其中運行指定的命令tox -e py26踱蠢。
首次運行需要安裝依賴創(chuàng)建環(huán)境火欧,運行時間較長,第二次開始,運行會很快布隔。

詳細(xì)配置示例:

[tox]
minversion = 1.6
#最低tox版本
skipsdist = True
#跳過本地軟件包安裝到virtualenv中步驟
envlist = py27,pep8,com    
# envlist 表示 tox 中配置的環(huán)境都有哪些

[testenv]   
#  testenv 是默認(rèn)配置离陶,如果某個環(huán)境自身的 section 中沒有定義這些配置稼虎, 那么就從這個 section 中讀取

setenv = VIRTUAL_ENV={envdir}
         PYTHONHASHSEED=0
         PYCURL_SSL_LIBRARY=openssl
# setenv 列出了虛擬機環(huán)境中生效的環(huán)境變量衅檀,一些配色方案和單元測試標(biāo)志

usedevelop = True   
# usedevelop 表示安裝 virtualenv 時, 項目自身是采用開發(fā)模式安裝的霎俩, 所以不會拷貝代碼到 virtualenv 目錄中哀军, 只是做個鏈接

install_command = pip install {opts} {packages}   
# 表示構(gòu)建環(huán)境的時候要執(zhí)行的命令,一般是使用 pip 安裝

deps = -r{toxinidir}/requirements.txt
       -r{toxinidir}/test-requirements.txt
# deps 指定構(gòu)建環(huán)境時需要安裝的第三方依賴包
# 每個虛擬環(huán)境創(chuàng)建的時候打却, 會通過 pip install -r requirements.txt 和 pip install -r test-requirements.txt 安裝依賴包到虛擬環(huán)境
# 一般的項目會直接安裝 requirements 和 test-requirements 兩個文件中的所有依賴包

commands = ostestr {posargs}
# commands 表示構(gòu)建好 virtualenv 之后要執(zhí)行的命令
# 這里調(diào)用了 ostestr 指令來調(diào)用 testrepository 執(zhí)行單元測試用例
# {posargs} 參數(shù)就是可以將 tox 指令的參數(shù)傳遞給 ostestr

whitelist_externals = bash
passenv = http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy NO_PROXY

[testenv:py34]
commands =
  python -m testtools.run
# 這個 section 是為 py34 環(huán)境定制某些配置的杉适,沒有定制的配置,將會從 [testenv] 讀取

[testenv:pep8]
commands =
  flake8 {posargs} ./egis egis/common
  # Check that .po and .pot files are valid:
  bash -c "find egis -type f -regex '.*\.pot?' -print0|xargs -0 -n 1 msgfmt --check-format -o /dev/null"
  {toxinidir}/tools/config/check_uptodate.sh
  {toxinidir}/tools/check_exec.py {toxinidir}/egis
# 執(zhí)行 tox -e pep8 進(jìn)行代碼檢查, 實際上是執(zhí)行了上述指令來進(jìn)行代碼的語法規(guī)范檢查

[tox:jenkins]
downloadcache = ~/cache/pip
# 定義了 CI server jenkins 的集成配置
# 指定了 pip 的下載 cache 目錄柳击,提高構(gòu)建虛擬環(huán)境的速度

[testenv:cover]
# Also do not run test_coverage_ext tests while gathering coverage as those
# tests conflict with coverage.
commands =
  python setup.py testr --coverage \
    --testr-args='^(?!.*test.*coverage).*$'
# 定義一個 cover 虛擬環(huán)境猿推,使單元測試的時候,自動應(yīng)用 coverage

...

其他常用配置:

setenv = VIRTUAL_ENV={envdir}
         PYTHONHASHSEED=0
#設(shè)置環(huán)境變量
usedevelop = True
#項目應(yīng)該使用setup.py開發(fā)安裝到環(huán)境中捌肴,而不是使用setup.py install來構(gòu)建和安裝其源代碼蹬叭。
依賴requirements.txt文件

將requirements.txt文件添加到deps的三種方式:

deps = -r requirements.txt
deps = -c constraints.txt
deps = -r requirements.txt -c constraints.txt
進(jìn)行測試

所有的令都是在{toxinidir}(tox.ini所在的目錄)作為當(dāng)前工作目錄執(zhí)行的。
在當(dāng)前目錄執(zhí)行:

$ tox [-e py27] [subpath]

subpath以Python模塊形式用"."一級一級連接

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末状知,一起剝皮案震驚了整個濱河市秽五,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌饥悴,老刑警劉巖坦喘,帶你破解...
    沈念sama閱讀 217,907評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異西设,居然都是意外死亡瓣铣,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評論 3 395
  • 文/潘曉璐 我一進(jìn)店門贷揽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來棠笑,“玉大人,你說我怎么就攤上這事擒滑「溃” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評論 0 354
  • 文/不壞的土叔 我叫張陵丐一,是天一觀的道長藻糖。 經(jīng)常有香客問我,道長库车,這世上最難降的妖魔是什么巨柒? 我笑而不...
    開封第一講書人閱讀 58,586評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上洋满,老公的妹妹穿的比我還像新娘晶乔。我一直安慰自己,他們只是感情好牺勾,可當(dāng)我...
    茶點故事閱讀 67,633評論 6 392
  • 文/花漫 我一把揭開白布正罢。 她就那樣靜靜地躺著,像睡著了一般驻民。 火紅的嫁衣襯著肌膚如雪翻具。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評論 1 302
  • 那天回还,我揣著相機與錄音裆泳,去河邊找鬼。 笑死柠硕,一個胖子當(dāng)著我的面吹牛工禾,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播蝗柔,決...
    沈念sama閱讀 40,275評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼闻葵,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了诫咱?” 一聲冷哼從身側(cè)響起笙隙,我...
    開封第一講書人閱讀 39,176評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎坎缭,沒想到半個月后竟痰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡掏呼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,819評論 3 336
  • 正文 我和宋清朗相戀三年坏快,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片憎夷。...
    茶點故事閱讀 39,932評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡莽鸿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出拾给,到底是詐尸還是另有隱情祥得,我是刑警寧澤,帶...
    沈念sama閱讀 35,655評論 5 346
  • 正文 年R本政府宣布蒋得,位于F島的核電站级及,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏额衙。R本人自食惡果不足惜饮焦,卻給世界環(huán)境...
    茶點故事閱讀 41,265評論 3 329
  • 文/蒙蒙 一怕吴、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧县踢,春花似錦转绷、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丙曙,卻和暖如春爸业,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背亏镰。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拯爽,地道東北人索抓。 一個月前我還...
    沈念sama閱讀 48,095評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像毯炮,于是被迫代替她去往敵國和親逼肯。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,884評論 2 354

推薦閱讀更多精彩內(nèi)容

  • # Python 資源大全中文版 我想很多程序員應(yīng)該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,482評論 6 427
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理桃煎,服務(wù)發(fā)現(xiàn)篮幢,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 環(huán)境管理管理Python版本和環(huán)境的工具为迈。p–非常簡單的交互式python版本管理工具三椿。pyenv–簡單的Pyth...
    MrHamster閱讀 3,792評論 1 61
  • 22年12月更新:個人網(wǎng)站關(guān)停,如果仍舊對舊教程有興趣參考 Github 的markdown內(nèi)容[https://...
    tangyefei閱讀 35,182評論 22 257
  • GitHub 上有一個 Awesome - XXX 系列的資源整理,資源非常豐富葫辐,涉及面非常廣搜锰。awesome-p...
    若與閱讀 18,646評論 4 418