有没有办法在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 :(得分:2)
您可以使用{[section]varname}
引用tox.ini中的变量。
这是一个如何使用变量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}