2016-11-25 68 views
0

有沒有辦法在tox.ini中設置任意變量?如何創建tox.ini變量

一個例子就是一個可能以各種方式使用的項目名稱。有了一個相當複雜的tox.ini,我發現我自己複製並粘貼到所有需要在頂部設置變量的位置。

作爲參考,一個例子tox.ini:

[tox] 
envlist = clean, py{27,35,py}, license, style 
skipsdist = True 
skip_missing_interpreters = True 
sitepackages = False 

[testenv:clean] 
deps = coverage 
skip_install = true 
commands = 
    hash -r 
    find {toxinidir} -name '*.pyc' -delete 
    find {toxinidir} -name '__pycache__' -delete 
    coverage erase 
    rm -Rf {toxinidir}/docs/_build {toxinidir}/docs/coverage {toxinidir}/docs/reports 

[testenv] 
passenv = * 
whitelist_externals = * 
install_command = {envpython} -m pip install -q --process-dependency-links {opts} {packages} 
envdir = {env:WORKON_HOME}/tox-<project_name>/{envname} 
sitepackages = False 
recreate = True 
commands = 
    # hash -r 
    py{27,35,py}: {envpython} -m pytest --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    smoke: {envpython} -m pytest -m smoke --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    unit: {envpython} -m pytest -m unit --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    integration: {envpython} -m pytest -m integration --long-running --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    requirements: {envpython} -m pytest --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    license: {envpython} -m pytest -m license --license --cov-append --html=docs/reports/{envname}-report.html {posargs} 
    py{27,35,py}-smoke: {envpython} -m pytest -m smoke --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    py{27,35,py}-unit: {envpython} -m pytest -m unit --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    py{27,35,py}-integration: {envpython} -m pytest -m integration --long-running --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    py{27,35,py}-requirements: {envpython} -m pytest --cov-append --cov=<project_name> --html=docs/reports/{envname}-report.html {posargs} 
    py{27,35,py}-license: {envpython} -m pytest -m license --cov-append --html=docs/reports/{envname}-report.html {posargs} 
deps = 
    --editable=file:///{toxinidir}[tests] 
    --editable=file:///{toxinidir} 
    py{27,35,py}-requirements: -r{toxinidir}/requirements.txt 


[testenv:coverage-report] 
deps = coverage 
skip_install = true 
whitelist_externals = * 
commands = 
    hash -r 
    coverage combine 
    coverage report -m 

[testenv:docs] 
sitepackages = False 
whitelist_externals = * 
recreate = True 
deps = --editable=file:///{toxinidir}[docs] 
commands = 
    hash -r 
    coverage html --directory=docs/coverage 
    coverage html 
    {envpython} setup.py build_sphinx 

[testenv:style] 
whitelist_externals = * 
sitepackages = False 
recreate = True 
commands = 
    py.test -q --flake8 <project_name>/ --html=docs/reports/{envname}-report.html {posargs} 

[testenv:vagrant] 
passenv = * 
whitelist_externals = * 
sitepackages = False 
recreate = False 
skip_install = true 
changedir = {toxinidir}/provision/vagrant 
commands = 
    hash -r 
    vagrant destroy --force 
    vagrant up 
+0

要澄清,這個任意變量是這樣,你可以參考整個TOX文件中的變量?即將其定義在一個地方。 – idjaw

+0

是的。我實際上在上面的例子中包含了一個佔位符,其中

回答

2

可以tox.ini內引用變量與{[section]varname}

這是如何,你可以用變量ignore_list工作的例子:

[main] 
ignore_list = "E201,E202,E203,E221,E231,E241,E265,E266,E272,E402,W293,W391" 

[testenv] 
commands = 
    pep8 \ 
    --max-line-length=120 \ 
    --ignore={[main]ignore_list}  
+0

太棒了!你讓我今天一整天都感覺很好。謝謝! –