Trey Hunner (Português)

Trey Hunner (Português)

escrevo muitos testes de unidade. Infelizmente, o meu código muitas vezes exige que o remendo do macaco seja testado de forma adequada. Eu frequentemente uso a função patch da biblioteca mock de Michael Foord (agora disponível no Python 3.4 como unitest.para o macaco alterar o meu código.

ao conversar com outros usuários de patch, eu percebi que todos parecem ter sua própria maneira favorita de usá-lo. Neste post vou discutir as formas como uso o patch.,

decorador

patch pode ser usado como decorador de métodos:

ou como decorador de classes:

uso patch como decorador Quando tenho uma função que quero remendar durante todo o meu teste. Não costumo usar o patch como decorador de turma e explico-te porquê.

exemplo do decorador

Gestor de contexto

patch pode ser usado como gestor de contexto:

prefiro usar patch como gestor de contexto quando quero corrigir uma função apenas para parte de um teste. Eu não uso patch como um gerenciador de contexto quando eu quero uma função remendada para um teste inteiro.,

o Contexto do gerenciador de exemplo

Manualmente usando start e stop

patch também pode ser usado manualmente o patch/unpatch usando start e stop métodos:

eu prefiro usar o patch usando start/stop quando eu precisar de uma função para ser corrigido para cada função em uma classe de teste.esta é provavelmente a forma mais comum de utilizar o patch nos meus testes. Eu frequentemente agrupo meus testes em classes de teste onde cada método é focado em torno de testar a mesma função. Portanto, eu geralmente quero as mesmas funções / objetos remendados para cada método de teste.,

eu observei acima que eu prefiro não usar decoradores de classe para resolver este problema. Em vez disso, prefiro usar atributos de classe de teste para armazenar referências a funções corrigidas em vez de aceitar argumentos de patch em cada método de teste com decoradores. Acho isto mais seco.

Aviso: um dos principais benefícios das formas de patch do decorador/Gestor de contexto é que eles lidam com a limpeza para você. Sempre que chamar start para configurar o seu objecto patch, lembre-se sempre de chamar stop para o limpar., Caso contrário, você terá uma função/objeto remendado macaco para o resto do seu programa em execução.

iniciar e parar exemplo

Resumo

Patch pode ser usado:

  1. como um método ou uma classe decorator
  2. como um contexto manager
  3. usando métodos de iniciar e parar

eu prefiro a minha testes para ser legível, SECO, e fácil de modificar. Eu tendem a usar métodos start / stop por essa razão, mas eu também frequentemente usar decoradores do método patch e às vezes usar gerentes de contexto patch., É útil conhecer os diferentes sabores de patch porque o seu sabor favorito pode nem sempre ser o mais adequado para o problema em mãos.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *