Chaves é uma ferramenta que define um contrato Python para reutilizável lógica estadual / apoio, principalmente para a unidade de teste. & Nbsp; Helper e lógica adaptação está incluído para tornar mais fácil para escrever seus próprios equipamentos que utilizam o contrato acessórios. Código Glue está previsto que torna o uso de dispositivos elétricos que atendem o contrato Chaves em unittest casos de teste compatíveis fácil e direto.
Por Chaves
Padrão Python unittest.py fornece nenhum método óbvio para fazer e estado necessário em um caso de teste que não seja através da adição de um método na classe de teste reutilização. Isso dimensiona mal - funções auxiliares complexos propogating-se uma hierarquia de classes de teste é um padrão regular, quando isso é feito. Zombando enquanto uma grande ferramenta em si mesma não impedir isso (e ajudantes para zombar coisas complexas podem se acumular na mesma forma, se colocado na classe de teste).
Ao definir um contrato uniforme onde ajudantes têm nenhuma dependência de classe de teste que permitem todas as atividades regulares código de higiene a ter lugar sem a influência de distorção de estar em uma hierarquia de classes que está modelando uma coisa totalmente diferente - que é o que ajudantes em um TestCase sofrer de.
Sobre Chaves
A luminária representa algum estado. Cada equipamento tem atributos nele que são específicos para a fixação. Por exemplo, um dispositivo elétrico que representa um diretório que pode ser usado para arquivos temporários pode ter um atributo 'caminho'.
Criação de Chaves
Minimamente, subclasse de Fixação, definir a Instalação para inicializar seu estado e agendar uma limpeza para quando a limpeza é chamado e está feito:
>>> Unittest importação
>>> luminárias de importação
>>> NoddyFixture classe (fixtures.Fixture):
... Def configuração (self):
... Super (NoddyFixture, self) .setUp ()
... Self.frobnozzle = 42
... Self.addCleanup (delattr, auto, 'frobnozzle')
Isto irá inicializar frobnozzle quando a instalação é chamado, e quando a limpeza é chamado a se livrar do atributo frobnozzle.
Há um ajudante para a adaptação de uma função ou função par em Chaves. ele coloca o resultado da função em fn_result:
>>> Os.path importação
>>> Shutil importação
>>> Tempfile importação
>>> Def setup_function ():
... Voltar tempfile.mkdtemp ()
>>> Def teardown_function (fixação):
... Shutil.rmtree (fixação)
>>> Fixação = fixtures.FunctionFixture (setup_function, teardown_function)
>>> Fixture.setUp ()
>>> Print os.path.isdir (fixture.fn_result)
Verdadeiro
>>> Fixture.cleanUp ()
A API luminária
O exemplo acima apresenta algumas das API luminária. A fim de ser capaz de limpar depois de um equipamento tem sido utilizado, todos os equipamentos definir um método de limpeza que deve ser chamada quando um acessório é terminado com.
Porque o seu bom para ser capaz de construir um determinado conjunto de dispositivos elétricos relacionados antes de usá-los, luminárias também definir um método de configuração que deve ser chamado antes de tentar usá-los.
Um desejo comum com equipamentos que são caros para criar é reutilizá-los em muitos casos de teste; para apoiar esta a luminária base também define um reset que chama self.cleanUp (); self.setUp (). Chaves que podem de forma mais eficiente se fazem reutilizável deve substituir esse método. Este pode então ser usado com o estado teste de múltipla via coisas como testresources, setUpClass, ou setUpModule.
Ao usar um dispositivo elétrico com um teste que você pode chamar os métodos setUp e limpeza manualmente. Mais conveniente, porém, é de usar a cola incluídos a partir fixtures.TestWithFixtures que fornece uma definição mixin useFixture (caso camelo porque unittest é caso de camelo ao longo) método. Ele vai chamar de instalação no dispositivo elétrico, chame self.addCleanup (fixação) de marcar uma limpeza, e devolver o equipamento. Isso permite que uma gravação:
>>> testtools importação
>>> Unittest importação
Note que usamos testtools Testcase aqui como nós precisamos garantir um método TestCase.addCleanup.
& Nbsp; >>> classe NoddyTest (testtools.TestCase, fixtures.TestWithFixtures):
& Nbsp; ... def test_example (self):
& Nbsp; ... luminária = self.useFixture (NoddyFixture ())
& Nbsp; ... self.assertEqual (42, fixture.frobnozzle)
& Nbsp; >>> result = unittest.TestResult ()
& Nbsp;. >>> _ = NoddyTest ('test_example') executado (resultado)
& Nbsp; >>> print result.wasSuccessful ()
& Nbsp; A verdadeira
Chaves implementar o protocolo contexto, para que você também pode usar um acessório como um gerente de contexto:
>>> Com fixtures.FunctionFixture (setup_function, teardown_function) como acessório:
... Print os.path.isdir (fixture.fn_result)
Verdadeiro
Requisitos :
- Python
Comentários não encontrado