asis é um utilitário leve Python para servir As-Is documento (que contêm cabeçalhos e conteúdo) através de HTTP.
Quando se trata de ferramentas de teste de unidade que buscar recursos HTTP, decidimos que gostaria de ter uma maneira de armazenar facilmente as respostas pré-determinadas, e depois servi-los a partir de um servidor no mesmo processo que estamos a execução desses testes. Sem patching macaco, sem infra-estrutura (como um servidor proxy cache).
Refira-se que, se você estiver olhando para capturar solicitações de serviços já existentes e, em seguida, reproduzi-las, o projeto vcr foi portado para várias línguas e é muito útil.
O que é?
Torcida vem com um recurso chamado como-está servindo, inspirado pelo Apache. Mas, quem quer incluem Twisted como uma dependência?
Isto é baseado na garrafa, e, portanto, suporta um número de backends WSGI (incluindo torcida e GEvent), e destina-se a ser leve. Um tal qual documento é aquele em que ambos os cabeçalhos e do conteúdo de uma resposta de HTTP são armazenadas:
HTTP / 1.0 200 OK
Content-Length: 137
Content-Type: text / html
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
& Nbsp;
Olá, eu sou uma página de teste
& Nbsp;
Note que esta exige apenas novas linhas para os cabeçalhos - os retornos de carro são adicionados automaticamente para a conveniência.
Instalação
Fácil peasy:
sudo pip instalar asis
Ou para aqueles que preferem a partir da fonte:
git clone https://github.com/seomoz/asis
cd asis && sudo python setup.py instalar
Uso
Você pode executar um servidor de asis relativamente fácil:
asis importação
# Sirva arquivos armazenados em 'foo /' na porta 8080
server = asis.Server ('foo', 8080)
server.run ()
...
server.stop ()
Alternativamente, ele pode ser usado de uma forma contexto-gerente:
asis importação
solicitações de importação
com asis.Server ('foo') como servidor:
& Nbsp; requests.get ('http: // localhost: 8080 / foo / bar.asis')
Há também um utilitário de linha de comando incluída por conveniência para servir arquivos asis como um servidor independente, o que é especialmente útil para ver esses arquivos através de onda ou o navegador:
# Servir arquivos de 'foo /' na porta 8080
foo asis-server --port 8080
# Same, usando GEvent e sendo detalhado
foo asis-server --port 8080 --server GEvent --verbose
sinos e assobios
Existem alguns recursos que você pode precisar para aproveitar:
Content-Encoding
Se você fornecer o cabeçalho Content-Encoding como quer gzip ou esvaziar, o conteúdo simples armazenados no arquivo são compactados e enviados sobre o fio dessa forma. Nesses casos, você pode deixar Content-Length como 0, e o comprimento de conteúdo verdadeiro (após a compressão) será enviado em seu lugar. Por exemplo, o seguinte é enviado como conteúdo compactado pelo gzip corretamente para o navegador:
HTTP / 1.0 200 OK
Content-Length: 0
Content-Type: text / plain
Content-Encoding: gzip
Olá Mundo!
Charset
Se você incluir um charset em seu cabeçalho Content-Type, em seguida, o seu conteúdo será interpretado como utf-8 no disco, e em seguida, codificada na codificação fornecida. A ideia é ajudar o processo de edição, de modo que você não tem que salvar explicitamente seus exemplos em seu conjunto de caracteres declarada. Como mudanças para codificação de conteúdo, o cabeçalho Content-Length é recalculado para ser correto uma vez que a transformação está completa.
Modos
Por padrão, o servidor é iniciado com o servidor GEvent, e é iniciado em um fundo linha verde, e isso deve ser pronto para servir pedidos logo run () retorna.
Como alternativa, o servidor pode ser iniciado em dois outros modos, garfo e bloco. Se garfo, então ele vai executar o servidor em um processo separado, e ainda funciona como um gerente de contexto e depois de chamar run (). Se o bloco for selecionado, ele é executado em um modo de bloqueio. Por exemplo:
# Execute-o em um processo separado
com asis.Server ('foo', port = 8080, mode = "fork"):
& Nbsp; # Faça alguns pedidos
& Nbsp; ...
exemplos e testes
Incluído no aqui uma série de exemplos de como estão os documentos, e test.py pode ser executado diretamente para verificar se eles são transferidos corretamente:
./test.py
Ele também fornece um exemplo de como você pode incorporá-lo em seus testes de unidade.
Contribuindo
. Perguntas, comentários, idéias sempre bem-vindos
Requisitos :
- Python
Comentários não encontrado