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!!

Foi útil?

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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top