Tox WARNING: тестовая команда найдена, но не установлена ​​в testenv

Я использую tox для своего проекта.

Вот мой tox.ini файл:

[tox]
envlist =
    py27,
    lint,
    coverage

skipsdist = True

[testenv:py27]
deps = -rrequirements.txt
commands = python -m unittest discover -s ./tests

[testenv:coverage]
commands =
    coverage run --source=tests -m unittest discover -s tests/
    coverage html
    coverage report


[testenv:lint]
commands = pylint ./foo

всякий раз, когда я запускаю tox, выполняется все, что в основном является линтингом, покрытием.

но Tox показывает предупреждения обо всем.

WARNING:test command found but not installed in testenv
Maybe you forgot to specify a dependency? See also the whitelist_externals envconfig setting.

Все успешно, но по-прежнему отображаются предупреждения и ошибки. Может ли кто-нибудь сказать мне, что я делаю не так?

Мой requirements.txt файл таков:

requests==2.18.4
JsonForm==0.0.2
jsonify==0.5
jsonschema==2.6.0
JsonSir==0.0.2
python-dateutil==1.5
DateTime==4.2
urllib3==1.22
contextlib2==0.5.5
mock==2.0.0
patch==1.16

person primer    schedule 04.12.2017    source источник
comment
Получите ли вы ту же ошибку, если настроите pylint и покрытие в своих требованиях?   -  person alecxe    schedule 05.12.2017
comment
Только что проверил, да, он показывает те же ошибки, но я получаю желаемый результат, который хочу, но я не могу понять, почему есть предупреждения для обоих   -  person primer    schedule 05.12.2017


Ответы (4)


Программы, которые вы используете в commands, должны быть установлены в виртуальной среде tox или занесены в белый список:

[tox]
envlist =
    py27,
    lint,
    coverage

skipsdist = True

[testenv:py27]
deps = -rrequirements.txt
whitelist_externals = python
commands = python -m unittest discover -s ./tests

[testenv:coverage]
whitelist_externals = coverage
commands =
    coverage run --source=tests -m unittest discover -s tests/
    coverage html
    coverage report


[testenv:lint]
whitelist_externals = pylint
commands = pylint ./foo
person phd    schedule 08.12.2017
comment
Не уверен, почему python должен быть включен в белый список - он должен быть в virtualenv! Но я думаю, что это лучший ответ, и его следует принять - @primer? - person qris; 19.03.2021
comment
В моем случае этого было достаточно белого списка с whitelist_externals = coverage - person Duilio; 13.07.2021
comment
@Duilio Зависит от того, какие программы вы установили в virtualenv. Если вы установили pylint, вам не нужно добавлять его в белый список. - person phd; 13.07.2021

https://tox.readthedocs.io/en/latest/config.html

здесь , установите эту опцию , возможно , вы пройдете

sitepackages = false (true | false) Установите значение true, если вы хотите создавать виртуальные среды, которые также имеют доступ к глобально установленным пакетам.

Предупреждение. В случаях, когда инструмент командной строки также установлен глобально, вы должны убедиться, что используете инструмент, установленный в virtualenv, с помощью python -m (если поддерживается этим инструментом) или {envbindir} /.

Если вы забудете это сделать, вы получите следующее предупреждение:

WARNING: test command found but not installed in testenv
    cmd: /path/to/parent/interpreter/bin/<some command>
    env: /foo/bar/.tox/python
Maybe you forgot to specify a dependency? See also the whitelist_externals envconfig setting.
person sunjiyun    schedule 31.08.2019

Я не знаю почему, но для решения мне пришлось снова клонировать репо. Сброс репо не решает только полный клон.

Дополнительные сведения см. В этой проблеме с токеном.

person betontalpfa    schedule 26.01.2020

Вопрос старый, но ответы не относятся к моей ситуации. В моем случае, как только я изменил [testenv] на [env], он работает. Это потому, что моя виртуальная среда Python называется «env».

person Garry    schedule 22.10.2019
comment
ВНИМАНИЕ: ошибки исчезают, но это потому, что определение testenv больше не находит. Переименование testenv в env НЕ подходит! С этого момента ваши тесты просто не будут выполняться. - person h345k34cr; 17.09.2020