Respostas:
Métodos ou classes de teste individuais podem ser desativados usando o unittest.skip
decorador.
@unittest.skip("reason for skipping")
def test_foo():
print('This is foo test case.')
@unittest.skip # no reason needed
def test_bar():
print('This is bar test case.')
Para outras opções, consulte os documentos para Ignorar testes e falhas esperadas .
@unittest.skip
também funciona bem.
@unittest.skip
não funciona.
Você pode usar decoradores para desativar o teste que pode envolver a função e impedir que o teste de unidade googletest ou python execute o testcase.
def disabled(f):
def _decorator():
print f.__name__ + ' has been disabled'
return _decorator
@disabled
def testFoo():
'''Foo test case'''
print 'this is foo test case'
testFoo()
Resultado:
testFoo has been disabled
A versão mais recente (2.7 - não lançada) suporta teste / desativação de teste dessa forma . Você pode obter este módulo e usá-lo em sua instalação existente do Python. Provavelmente vai funcionar.
Antes disso, eu usei para renomear os testes que eu queria ignorados para xtest_testname
partir test_testname
.
Aqui está um script elisp rápido para fazer isso. Meu elisp está um pouco enferrujado, então peço desculpas antecipadamente por qualquer problema que ele tenha. Não testado.
(defun disable_enable_test ()
(interactive "")
(save-excursion
(beginning-of-line)
(search-forward "def")
(forward-char)
(if (looking-at "disable_")
(zap-to-char 1 ?_)
(insert "disable_"))))
Basta colocar o @unittest.SkipTest
decorador acima do teste.
unittest.skip
(sem razão) me dá erro em Python 2, mas não em Python 3.
Os documentos para 2.1 não especificam um método de ignorar ou ignorar.
Normalmente, porém, eu bloqueio comentários quando necessário.
Focalizando a parte "temporariamente desativada" da pergunta, a melhor resposta depende um pouco do caso de uso. O caso de uso que me trouxe aqui é que estou desenvolvendo um teste em uma função. Nesse processo, escrevo sucessivamente testes e frequentemente uso pontos de interrupção na função para depuração. Se eu apenas executar todos os testes toda vez que o executar, acabarei parando nos pontos de interrupção dos testes que já funcionam. Adicionar "pular" ou colocar o nome do teste ou algo assim não é o que eu quero, porque quando terminar de escrever a função, desejo que todos os testes sejam executados. Se eu usasse "pular", teria que voltar e "desatar".
Para o meu caso de uso, a solução está no executor de teste, não no código de teste. Eu uso pytest . Com o pytest, é fácil especificar um único teste na linha de comando:
pytest PYTHON_FILENAME.TEST_CLASS.TEST_NAME
(substitua as tampas pelos seus valores).
Eu entendo que essa pergunta era para python-unitest. Eu não uso isso há muito tempo. Eu não ficaria surpreso se tivesse algo semelhante ao pytest. Caso contrário, você pode facilmente mudar para pytest. Você não precisa modificar seu código. Basta instalá-lo e alterar o comando do executor de teste.
Além disso, eu uso o PyCharm Pro. Na página que mostra meu código de teste, há um pequeno ícone ao lado do def para cada teste. Eu posso clicar nesse ícone e executar esse teste individualmente.
@unittest.SkipTest
obras e não@unittest.skip