Este documento discute testes automatizados (TDD) com Google App Engine e Python. Ele apresenta uma ferramenta chamada testable_appengine que facilita a escrita de testes para aplicações no App Engine, fornecendo um ambiente de desenvolvimento virtualizado, dados de teste em JSON e scripts makefile. O documento também discute por que é importante escrever testes para aplicações no App Engine e quais funcionalidades adicionais a ferramenta poderia ter.
6. O que é o Google App Engine
● Uma plataforma de PaaS
● APIs e bibliotecas "próprias"
o mas roda aplicações Django, Flask etc
● Você nunca se preocupa com o servidor
● O time da Google administra tudo pra você
● Ambiente de desenvolvimento local
● Deployment com o SDK (ou com git)
7. O que tem no Google App Engine
● Spin-up e spin-down automágico
● Pay-as-you-go
● Datastore (NoSQL) + Google Cloud SQL
● Filas - para processamento assíncrono
● NDB - Quem não espera não cansa
● Autenticação
● Um framework que incentiva boas práticas
o E castiga você pelas más
8. O que mais?
● Uma interface de gerenciamento
● É fácil trocar versões
o E fazer split entre versões
● Uma nova interface de gerenciamento nova
o Integrada com os outros serviços de cloud da
Google
9. O que já tínhamos
● GAEUnit
o Deploy do código de teste em produção
o Ainda funciona?
● Ferramental do SDK
o Batteries not included
● NoseGAE, pytest-gae
o Some batteries included
● ?
10. Por que fazer mais um
● Incluir pilhas no pacote
● Ter opinião pode ser uma boa idéia
o Convenção sobre configuração ajuda
● Algumas coisas fazem falta no ferramental
do SDK
o Faltam mais exemplos
o O jeito com que o Django lida com fixtures é duca
11. Por que fazer mais um (continuação)
● Virtualenvs são legais
o Quebrar o Python do sistema é sempre ruim
o O Python do sistema pode não ser uma opção
Algumas pessoas usam Windows
● Quando é difícil testar, ninguém testa
o preguiça é a primeira virtude do programador
(embora, nesse caso, não seja uma)
● Um pouco de hand-holding ajuda
12. O que fizemos
● Um projeto-base (no GitHub)
● Monta um virtualenv
● Roda testes de sanidade
● Dados de teste em JSON
● Ambiente montado com um Makefile
● Testes independem do framework que você
está usando
● Dá pra usar ipdb (nos testes)!
13. Como se usa?
Demo
1. git clone
o git@github.com:rbanffy/testable_appengine.git
2. make venv
3. nosetests
14. O que falta fazer
● Importar hierarquias de objetos para testes
● Tornar mais fácil usar em projetos já em
andamento
o Sobretudo manter o maquinário atualizado
o Se bem que isso pode nem ser importante
● Precisamos de mais usuários
o Que dêem mais palpites