Problemas usando o nariz em um virtualenv
-
21-08-2019 - |
Pergunta
Não consigo usar o nariz (nostests) em um projeto VirtualENV - ele não consegue encontrar os pacotes instalados no ambiente VirtualEnv.
O estranho é que eu posso definir
test_suite = 'nose.collector'
em setup.py e execute os testes muito bem como
python setup.py test
Mas ao executar o Notests reto, existem todos os tipos de erros de importação.
Eu tentei com uma instalação de nariz em todo o sistema e um pacote de nariz virtualenv e sem sorte.
Alguma ideia?
Obrigado!!
Solução
Você é capaz de correr myenv/bin/python /usr/bin/nosetests
? Isso deve passar o nariz usando o conjunto de bibliotecas do ambiente virtual.
Outras dicas
Você precisa ter uma cópia do nariz instalado no ambiente virtual. Para forçar a instalação do nariz no VirtualEnv, mesmo que já esteja instalada nos pacotes globais, execute pip install
com o -I
bandeira:
(env1)$ pip install nose -I
A partir de então você pode simplesmente correr nosetests
como sempre.
Na mesma situação que eu precisava recarregar o virtualenv
Para que o caminho seja atualizado corretamente:
deactivate
env/bin/activate
Eu tenho um problema semelhante. A solução alternativa a seguir ajudou:
python `which nosetests`
(em vez de apenas nosestests
)
Aqui está o que funciona para mim:
$ virtualenv --no-site-packages env1
$ cd env1
$ source bin/activate # makes "env1" environment active,
# you will notice that the command prompt
# now has the environment name in it.
(env1)$ easy_install nose # install nose package into "env1"
Eu criei um pacote realmente básico slither
que tinha, em seu setup.py
, mesmo test_suite
atributo como você mencionou acima. Então eu coloquei a fonte do pacote em env1/src
.
Se você olhou para dentro env1/src
, você veria:
slither/setup.py
slither/slither/__init__.py
slither/slither/impl.py # has some very silly code to be tested
slither/slither/tests.py # has test-cases
Eu posso executar os testes usando test
Subcomando:
(env1)$ pushd src/slither
(env1)$ python setup.py test
# ... output elided ...
test_ctor (slither.tests.SnakeTests) ... ok
test_division_by_zero (slither.tests.SnakeTests) ... ok
Ran 2 tests in 0.009s
OK
(env1)$ popd
Ou, posso executar os mesmos testes com nosetests
:
(env1)$ pushd src
(env1)$ nosetests slither/
..
Ran 2 tests in 0.007s
OK
(env1)$ popd
Observe também isso nosetests
pode ser exigente sobre executáveis. Você pode passar --exe
Se você deseja descobrir testes nos módulos Python que são executáveis.
Se tudo mais falhar, tente instalar o nariz no seu Venv e/ou correr nosetests-2.7
. Eu acredito que a resposta de @Andrea-Zonca tem o mesmo efeito se o seu Python Venv for 2.7
Talvez essa seja uma mudança recente, mas para mim, quando instalei o nostests através do PIP, houve um executável nostests instalado em .virtualenvs/<env>/bin
, que (sem surpresa) opera corretamente com o VirtualEnv.
Você pode ter um nosetests
que está instalado em outro lugar em seu PATH
com maior prioridade do que a instalada no seu virtualENV. Uma maneira rápida de dar o nose
módulo e associado nosetests
O script instalado em sua prioridade superior virtualenv atual é editar seu PATH
:
export PATH=/path/to/current/virtualenv/bin:$PATH