Eu gostaria de acrescentar algumas coisas ao que a unittest.TestCase
classe faz ao ser inicializada, mas não consigo descobrir como fazer isso.
Agora estou fazendo isso:
#filename test.py
class TestingClass(unittest.TestCase):
def __init__(self):
self.gen_stubs()
def gen_stubs(self):
# Create a couple of tempfiles/dirs etc etc.
self.tempdir = tempfile.mkdtemp()
# more stuff here
Gostaria que todos os stubs fossem gerados apenas uma vez para todo este conjunto de testes. Não posso usar setUpClass()
porque estou trabalhando no Python 2.4 (também não consegui fazer isso funcionar no Python 2.7).
O que eu estou fazendo errado aqui?
Eu recebo este erro:
`TypeError: __init__() takes 1 argument (2 given)`
... e outros erros quando movo todo o código stub para __init__
quando o executo com o comando python -m unittest -v test
.
python
unit-testing
saltitante
fonte
fonte
Respostas:
Experimente isto:
Você está sobrescrevendo o
TestCase
de__init__
, então você pode deixar a classe base lidar com os argumentos para você.fonte
setUp
vez de substituir__init__
?unittest.TestCase.__init__(self,*args,**kwargs)
vez desuper(TestingClass, self).__init__(*args, **kwargs)
Só queria adicionar alguns esclarecimentos sobre como substituir a função init do
A função será chamada antes de cada método em sua classe de teste. Por favor, note que se você quiser adicionar alguns cálculos caros que devem ser realizadas uma vez antes de executar todos os métodos de teste Utilize a SetUpClass classmethod
Esta função será chamada uma vez antes de todos os métodos de teste da classe. Consulte Recursos
setUp
para obter um método chamado antes de cada método de teste.fonte
Instale unittest2 e use o unittest desse pacote.
e usar a classe setupModule / tearDownModule ou setupClass / tearDown para lógica de inicialização especial
Mais informações: http://www.voidspace.org.uk/python/articles/unittest2.shtml
Também é muito provável que você esteja criando mais um teste de integração do que um teste de unidade. Escolha um bom nome para os testes para diferenciá-los ou coloque em um módulo de contêiner diferente.
fonte