Python Tox Deps с шаблонными командами - PullRequest
1 голос
/ 20 марта 2019

Я использую tox для тестирования. В настоящее время мой tox.ini определяет несколько команд:

commands =
    unit-a: py.test --cov mypackage mypackage/tests/unit/a []
    unit-b: py.test --cov mypackage mypackage/tests/unit/b []
    func: python -m behave -n "{env:SCENARIO}"

Он также определяет зависимости для каждой команды:

deps =
    unit-a: mock
    unit-a: pytest==3.9.3
    unit-a: pytest-cov
    unit-a: pytest-sugar
    unit-b: mock
    unit-b: pytest==3.9.3
    unit-b: pytest-cov
    unit-b: pytest-sugar
    func: behave

Это неуклюже и излишне для меня. Есть ли способ использовать шаблон для команды, чтобы указать deps? Например.,

deps =
    unit-*: mock
    unit-*: pytest==3.9.3
    unit-*: pytest-cov
    unit-*: pytest-sugar
    func: behave

Вот ошибка, которую я получаю, когда пытаюсь это сделать:

ERROR: invocation failed (exit code 1), logfile: /app/.tox/py3-unit-a/log/py3-unit-a.log
ERROR: actionid: py3-unit-a
msg: getenv
cmdargs: "/app/.tox/py3-unit-a/bin/pip install --progress-bar off --index-url=https://pypi.org/simple 'unit-*: mock' 'unit-*: pytest==3.9.3' 'unit-*: pytest-cov' 'unit-*: pytest-sugar'"

Invalid requirement: 'unit-*: mock'

1 Ответ

1 голос
/ 20 марта 2019

Вы можете сделать просто:

deps =
    unit: mock pytest==3.9.3 pytest-cov pytest-sugar
    func: behave

Первая строка с unit: работает, потому что tox делит факторы на -.

Вы также можете попробовать отрицание:

deps =
    !func: mock pytest==3.9.3 pytest-cov pytest-sugar
    func: behave
...