Eu tenho um arquivo chamado test_web.py contendo uma classe TestWeb e muitos métodos nomeados como test_something ().
Posso executar todos os testes da classe assim:
$ nosetests test_web.py
...
======================================================================
FAIL: checkout test
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Users/me/path/here/test_web.py", line 187, in test_checkout
...
Mas não consigo fazer testes individuais. Isso me dá erros de “teste sem efeito” quando executado no mesmo PWD:
$ nosetests test_web.py:test_checkout
$ nosetests TestWeb:test_checkout
Oque pode estar errado aqui?
Respostas:
Você deve especificá-lo assim:
nosetests <file>:<Test_Case>.<test_method>
ouVeja a documentação
fonte
Você também pode especificar um módulo:
fonte
nosetests
ou o quê, mas essa sintaxe falha. O que funciona, entretanto, énosetests tests/test_integration:IntegrationTests.test_user_search_returns_users
/
.
tests
não ser um módulo em sua configuração?__init__.py
notests
diretório. Bem feito! ObrigadoEspecificar nomes na linha de comando, como as outras respostas sugerem, funciona e é útil. No entanto, quando estou escrevendo testes, muitas vezes descubro que quero executar apenas o teste no qual estou trabalhando, e os nomes que eu teria que escrever na linha de comando ficam bem longos e complicados de escrever . Nesse caso, prefiro usar um decorador e uma bandeira personalizados.
Eu defino
wipd
("decorador de trabalho em andamento") assim:Isso define um decorador
@wipd
que definirá owip
atributo nos objetos que ele decora. Por exemplo:Em seguida,
-a wip
pode ser usado na linha de comando para restringir a execução do teste àqueles marcados com@wipd
.Nota sobre os nomes ...
Estou usando o nome
@wipd
do decorador em vez de@wip
evitar este tipo de problema:O
import
fará com que owip
decorador de um membro da classe , e todos os testes na classe será selecionado. Oattrib
plug-in verifica a classe pai de um método de teste para ver se o atributo selecionado existe lá também, e os atributos que são criados e testados porattrib
não existem em um espaço segregado. Portanto, se você testar com-a foo
e sua classe contémfoo = "platypus"
, todos os testes da classe serão selecionados pelo plug-in.fonte
Para executar vários testes específicos, você pode simplesmente adicioná-los à linha de comando, separados por espaço.
fonte
Em meus testes, a especificação de testes com nomes de módulos não funciona
Você deve especificar o caminho real para
.py
:Isso com
nose==1.3.7
fonte
Meu requisito era executar um único teste em um arquivo de teste que estava em outro diretório do Windows - isso foi feito no prompt de comando do anaconda da seguinte maneira:
executou nosetests de:
mas test_MyTestFile.py e methodsFile.py estavam em:
execute um único teste incluindo o caminho com aspas da seguinte maneira:
test_MyTestFile.py tinha esta aparência:
métodosFile.py tinha a seguinte aparência:
fonte