Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Compreendendo o Funcionamento do Mock

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest. →

Compreendendo o Funcionamento do Mock

Apresentação feita do Meetup Grupy-SP de Agosto de 2019 na ELO7.

Avatar for Rafael Reimberg Lima

Rafael Reimberg Lima

August 29, 2019

More Decks by Rafael Reimberg Lima

Other Decks in Technology

Transcript

  1. Pessoal: Rafael Reimberg Lima, 29, Paulistano, Casado. Formação: Análise e

    Desenvolvimento de Sistemas pelo IFSP / Engenharia de Software pela PUC-SP Profissional: 11 anos em TI, atualmente Engenheiro de Software no Mercado Bitcoin Hobby: Netflix / Fotografia Bio
  2. Duck Typing Se algo se comporta como um pato, pra

    mim é um pato. >>> l = [1, 2, 3] >>> type(l) <type 'list'> >>> ["l{}".format(i) for i in l] ['l1', 'l2', 'l3'] >>> t = tuple(l) >>> type(t) <type 'tuple'> >>> ["t{}".format(i) for i in t] ['t1', 't2', 't3'] Esse comportamento pode ser comparado com uma Interface em linguagens estáticas: Se um objeto implementa a interface pato, vou tratá-lo como um pato.
  3. Magic Special Methods Os métodos dunder (double under) são invocados

    por operadores matemáticos, palavras chave da linguagem ou mesmo pelas sintaxes de acesso à elementos. Exemplos: • Atributos: __getattr__, __setattr__, __delattr__, ... • Classe como método: __call__ • Dicionários: __getitem__, __setitem__, __delitem__, ... • Matemática: __add__, __sub__, __div__, …
  4. Monkey Patch Técnica de modificar o comportamento de um objeto

    em tempo de execução. >>> aux = True >>> True = False >>> False = True >>> print True False >>> print False True ATENÇÃO: Esse exemplo é ilustrativo e só funciona com Python2, não use em produção!
  5. Context Managers Definição de contextos de execução em determinado bloco

    com a keyword with. arq = open(‘arquivo’) print(arq.readlines()) arq.close() OU with open('arquivo') as arq: print(arq.readlines())
  6. Decorators Definição de uma inner function para adicionar comportamentos antes

    e/ou depois de sua execução. def grava_log_acesso(func): def decorator(*args, **kwargs): print(“Isso é um decorator”) print( “Vai chamar {}”.format( repr(func))) result = func( *args, **kwargs) print(“Chamou a função”) return result return decorator @grava_log_acesso def meu_print(texto): print(texto) >>> meu_print(“Oi PyBR2018”) Isso é um decorator Vai chamar <function meu_print at 0x7f46d229e598> Oi PyBR2018 Chamou a função