15.12.2022 Views

Python Eficaz

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

ambientes tenham sempre os mesmos pacotes do Python instalados. O problema

é que os ambientes de produção às vezes têm muitos pré-requisitos externos, que

são difíceis de reproduzir em um ambiente de desenvolvimento.

Por exemplo, digamos que se queira executar o programa em um contêiner de

servidor web e dar a ele acesso ao banco de dados. Isso significa que toda vez

que quisermos modificar o código do programa é preciso rodar, na máquina de

desenvolvimento, o contêiner do servidor web, o banco de dados deve estar

configurado corretamente e seu programa precisa das senhas de acesso. É uma

quantidade considerável de trabalho e preocupações, especialmente quando tudo

o que estamos tentando fazer é testar se a pequena modificação que fizemos em

uma única linha funciona corretamente.

A melhor maneira de contornar esses problemas é sobrepor partes do programa

durante sua inicialização para oferecer alguma funcionalidade diferente,

dependendo do ambiente em que está sendo executado. Por exemplo,

poderíamos ter dois arquivos __main__ diferentes, um para produção e outro

para desenvolvimento.

# dev_main.py

TESTING = True

import db_connection

db = db_connection.Database()

# prod_main.py

TESTING = False

import db_connection

db = db_connection.Database()

A única diferença entre os dois arquivos é o valor da constante TESTING. Os

outros módulos do programa podem então importar o módulo __main__ e usar o

valor de TESTING para decidir por qual deles definir seus atributos.

# db_connection.py

import __main__

class TestingDatabase(object):

# ...

www.full-ebook.com

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!