1. 簡(jiǎn)述
tox是一個(gè)可以同時(shí)管理不同Python版本環(huán)境的命令行工具贩幻,與Pytest共同使用的比例相當(dāng)高。與Jenkins結(jié)合后,可以極大提高環(huán)境配置的效率。下面是使用過(guò)的牍颈,在官方文檔扒出來(lái)的幾個(gè)技巧。
2. 技巧
2.1 使用多個(gè)pip源&增加下載超時(shí)時(shí)間
下載python依賴包的時(shí)候琅关,可能有些包需要從內(nèi)網(wǎng)python倉(cāng)庫(kù)安裝(如devpi)煮岁,那么tox.ini可以這么配置
[tox]
# 通過(guò)這個(gè)方式指定pip安裝參數(shù)
install_command=python -m pip install --timeout 60 {packages}
indexserver=
default = https://pypi.doubanio.com/simple
DEV = http://devpi-server/index
[testenv]
deps=
setuptools_scm
sqlalchemy
:DEV:CompanyAPI==2.0.1
2.2 執(zhí)行命令失敗后不退出
[base]
opt=
--alluredir allure_results
[testenv]
commands=
pytest {[base]opt} {posargs} cases1
python sendreport.py
比方說(shuō),需要連續(xù)執(zhí)行多條命令涣易,無(wú)論前面的命令是否執(zhí)行成功画机,后面都要執(zhí)行發(fā)送測(cè)試報(bào)告。而默認(rèn)情況下新症,tox會(huì)在任一條命令失敗后退出的步氏。
下面使用的是robotframework中重跑失敗case的例子,只要在命令前加-
(注意空格)徒爹,就可以忽略這條命令的返回狀態(tài)了荚醒。
commands=
- robot --include major {[base]opt} -o output.xml --prerunmodifier CleanPath:Reports Cases
- robot --include major {[base]opt} --rerunfailed Reports/output.xml -o new.xml Cases
- rebot --merge -o Reports/output.xml -l Reports/log.html -r Reports/report.html Reports/output.xml Reports/new.xml
2.3 巧用環(huán)境變量
可以使用tox -e qa
來(lái)指定環(huán)境,同時(shí)可以在這里指定不同的環(huán)境變量瀑焦。只要在程序中簡(jiǎn)單的判斷環(huán)境變量腌且,就可以切換實(shí)現(xiàn)不同的表現(xiàn)。
[testenv:qa]
setenv=
ENV=qa
commands = pytest
[testenv:stg]
setenv=
ENV=stg
commands = pytest
2.4 與docker結(jié)合
可以考慮用docker來(lái)做測(cè)試環(huán)境榛瓮,減少下載python包時(shí)報(bào)錯(cuò)的可能铺董。使用dox或者tox-docker,也能利用到tox的特性禀晓。
3. 參考
更多請(qǐng)參考官方文檔:
https://tox.readthedocs.io/en/latest/examples.html