Skip to content

Commit 35440e1

Browse files
committed
Merge pull request #269 from mstuttgart/post/python-com-unittest-travis-ci-coveralls-e-landscape-parte-4-de-4
[NEW] Python com Unittest, Travis CI, Coveralls e Landscape (Parte 4 de 4)
2 parents 9a965f2 + cc38fbb commit 35440e1

6 files changed

+153
-22
lines changed
10.5 KB
Loading
17.7 KB
Loading
2.77 KB
Loading

content/python-com-unittest-travis-ci-coveralls-e-landscape-parte-3-de-4.md

Lines changed: 36 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,6 @@ python:
8787
8888
sudo: required
8989
90-
install:
91-
- pip install flake8
92-
93-
before_script:
94-
- flake8 codigo_avulso_test_tutorial
95-
9690
script:
9791
- run setup.py test
9892
@@ -108,24 +102,52 @@ python:
108102
sudo: required
109103
110104
install:
111-
- pip install flake8
112105
- pip install coveralls
113106
114-
before_script:
115-
- flake8 codigo_avulso_test_tutorial
116-
117107
script:
118108
- coverage run --source=codigo_avulso_test_tutorial setup.py test
119109
120110
after_success:
121111
- coveralls
122112
123113
```
124-
* `install`: aqui adicionamos o comando `pip install coveralls`. A instalação do `coveralls` é necessaria para que possamos gerar os relatórios. Obs.: Você pode instalá-lo em sua máquina e gerar relátorios em html. Fica a sugestão de estudo.
125-
* `script`: aqui substimuímos o comando `run setup.py test` por `coverage run --source=codigo_avulso_test_tutorial setup.py test`. Esse comando executa os mesmo testes de antes, mas já prove um relatório sobre a cobertura de testes do seu código.
126-
* `after_success`: a última alteração foi adicionar a tag `after_success`. Essa tag indica que após a execuação bem sucedida dos testes, deve-se iniciar o serviço de analise do `Coveralls`.
127114

128-
Assim que terminar de fazer essas alterações você já pode enviar o seu código para o `Github`. Assim que subir o código, o `Travis CI` irá iniciar o processo de teste. Finalizando os testes, o `Coveralls`será iniciado. Se tudo ocorrer bem, a badge que adicionamos no aquivo README do projeto será atualizada exibindo a porcentagem do nosso código que está coberta por testes. Você pode clicar na badge ou ir até o seu perfil no site do [Coveralls](https://coveralls.io) e verificar com mais detalhes as informações sobre seu projeto.
115+
#### Tag "install":
116+
Aqui adicionamos o comando
117+
118+
```bash
119+
pip install coveralls
120+
```
121+
122+
A instalação do `coveralls` é necessaria para que possamos gerar os relatórios. Você pode instalá-lo em sua máquina e gerar relátorios em html. Fica a sugestão de estudo.
123+
124+
#### Tag "script":
125+
Aqui substimuímos o comando
126+
127+
```bash
128+
run setup.py test
129+
```
130+
por
131+
132+
```bash
133+
coverage run --source=codigo_avulso_test_tutorial setup.py test
134+
```
135+
136+
Esse comando executa os mesmo testes de antes, mas já prove um relatório sobre a cobertura de testes do seu código.
137+
138+
#### Tag "after_success":
139+
A última alteração foi adicionar a tag `after_success`.
140+
141+
```bash
142+
after_success:
143+
- coveralls
144+
```
145+
146+
Essa tag indica que após a execuação bem sucedida dos testes, deve-se iniciar o serviço de analise do `Coveralls`.
147+
148+
Assim que terminar de fazer essas alterações você já pode enviar o seu código para o `Github`. Assim que subir o código, o `Travis CI` irá iniciar o processo de teste.
149+
Finalizando os testes, o `Coveralls` será iniciado. Se tudo ocorrer bem, a badge que adicionamos no aquivo README.md do projeto será atualizada exibindo a porcentagem do nosso código
150+
que está coberta por testes. Você pode clicar na badge ou ir até o seu perfil no site do [Coveralls](https://coveralls.io) e verificar com mais detalhes as informações sobre seu projeto.
129151

130152
<center>
131153
![](images/mstuttgart/snapshot_23.png)
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
Title: Python com Unittest, Travis CI, Coveralls e Landscape (Parte 4 de 4)
2+
Slug: python-com-unittest-travis-ci-coveralls-e-landscape-parte-4-de-4
3+
Date: 2016-05-20 21:09:18
4+
Category: Python
5+
Tags: git, travis-ci, python, coveralls, landscape, test, tutorial
6+
Author: Michell Stuttgart
7+
Email: michellstut@gmail.com
8+
Github: mstuttgart
9+
Linkedin: michellstut
10+
Facebook: michell.stuttgart
11+
Site: http://codigoavulso.com.br
12+
13+
Fala pessoal, tudo bem?
14+
15+
Na [terceira](python-com-unittest-travis-ci-coveralls-e-landscape-parte-3-de-4.html) parte deste tutorial, aprendemos a usar o `Coveralls` para gerar relatórios de testes para o nosso projeto. A próxima ferramenta que iremos estudar será o serviço `Landscape`. Neste tutorial serei breve, já que o uso *default* da ferramenta é bem simples.
16+
17+
#### Sobre o Landscape
18+
19+
[Landscape](https://landscape.io/) é uma ferramenta online semelhante ao já conhecido [PyLint](https://www.pylint.org/), ou seja, é um verificador de *bugs*, estilo e de qualidade de código para [Python](https://www.python.org/).
20+
21+
<center>
22+
![](images/mstuttgart/snapshot_32.png)
23+
</center>
24+
25+
Quando ativamos a análise do `Landscape` em nosso repositório, ele é executado após cada *push* ou *pull request* e realiza uma varredura em nosso código fonte [Python](https://www.python.org/) atrás de possíveis *bugs*, como por exemplo variáveis sendo usadas antes de serem declaradas, nomes reservados sendo usados como nomes de variáveis e etc. Ele também verifica se a formatação do seu código esta seguindo a [PEP8](https://www.python.org/dev/peps/pep-0008/) e aponta possíveis falhas de *design* em seu código.
26+
27+
Uma vez que a análise esteja finalizada, a ferramenta indica em porcentagem a "qualidade" do nosso código, ou em palavras mais precisas, o quanto nosso código está bem escrito segundo as boas práticas de desenvolvimento. Vale deixar claro que o `Landscape` não verifica se seu código funciona corretamente, isso é responsabilidade dos testes que você escreveu, como foi visto na [primeira parte](python-com-unittest-travis-ci-coveralls-e-landscape-parte-1-de-4.html) do tutorial.
28+
29+
Semelhante as ferramentas dos tutoriais anteriores, o `Landscape` é totalmente gratuito para projetos *opensource*.
30+
31+
#### Criando uma conta
32+
33+
O processo de inscrição é simples. No topo da página temos a permissão de nos inscrevermos usando a conta do `Github`. Realize a inscrição e vamos as configurações.
34+
35+
<center>
36+
![](images/mstuttgart/snapshot_33.png)
37+
</center>
38+
39+
#### Ativando o serviço
40+
41+
De todas as ferramentas apresentadas, esta é a mais simples de configurar. O único passo necessário aqui é ativar o serviço para o nosso repositório. Como exemplo, estarei usando o mesmo repositório dos últimos tutoriais. Clique [aqui](https://github.com/mstuttgart/codigo-avulso-test-tutorial) para visualizar o repositório.
42+
43+
Assim que realizar o cadastro, vamos nos deparar com uma tela contendo a listagem dos nosso repositórios que estão utilizando o serviço. Se você nunca usou o serviço provavelmente não terá nenhum repositório, então faça o seguinte: clique no botão `Sync with Github now`, para realizar a sincronização com a sua conta do [Github](https://github.com). Assim que a sincronização estiver completa, clique no botão `Add repository`.
44+
45+
<center>
46+
![](images/mstuttgart/snapshot_34.png)
47+
</center>
48+
49+
Ao clicar, seremos levados a uma tela com a listagem de todos os repositórios que temos permissão de escrita. Procure o repositório que deseja ativar o serviço (lembrando que o `Landscape` funciona apenas para projetos `Python`) e o selecione (basta clicar sobre o nome do repositório).
50+
51+
<center>
52+
![](images/mstuttgart/snapshot_35.png)
53+
</center>
54+
55+
Adicione o repositório clicando no botão verde `Add Repository`, logo abaixo da lista. Seremos novamente redirecionados a tela inicial, agora com o repositório escolhido já visível.
56+
57+
<center>
58+
![](images/mstuttgart/snapshot_36.png)
59+
</center>
60+
61+
Inclusive, a partir desse momento, o `Coveralls` já irá iniciar a análise do seu projeto. Clique no nome do repositório para ver mais detalhes da analise.
62+
63+
<center>
64+
![](images/mstuttgart/snapshot_37.png)
65+
</center>
66+
67+
No caso do meu projeto de teste, temos que a "saúde" do código está em `100%`, ou seja, nenhuma parte do código apresenta erros de estilo, *bugs* e está utilizando boas práticas de programação em todo seu escopo.
68+
69+
Na barra lateral localizada à esquerda da página, temos alguns items, entre os quais os mais importantes são descritos a seguir:
70+
71+
* `Error`: são instruções no código que provavelmente indicam um erro. Por exemplo, quando referenciamos uma variável sem declará-la antes ou realizamos a chamada de algum método inexistente.
72+
* `Smells`: são sinais ou sintomas no código que possivelmente indicam uma falha no projeto do *software*. Diferentemente de um *bug*, *code smells* não indicam uso incorreto da linguagem de programação e nem impedem o *software* de funcionar. Ao invés disso, eles indicam falhas no *design* do projeto que podem atrasar seu desenvolvimento ou mesmo ser a porta de entrada para *bugs* no futuro. Exemplos de *code smells* são: métodos ou códigos duplicados, classes muito grandes, uso forçado de algum *design pattern* quando o mesmo poderia ser substituído por um código mais simples e fácil de manter, métodos muito longos ou com excessivo números de parâmetros e por aí vai. A lista pode crescer muito haha... para mais detalhes [leia](https://en.wikipedia.org/wiki/Code_smell).
73+
* `Style`: como o nome sugere, este item exibe os erros de estilo em seu código indicando trechos de código que não estão seguindo as regras de estilo da `PEP8`, trechos de códigos com identação incorreta e etc.
74+
75+
Como último passo, agora somente nos resta adicionar uma `badge` no arquivo `README.md` em nosso repositório. Assim poderemos ver a porcentagem de "saúde" do nosso projeto sem precisar acessar a página do `Landscape`.
76+
77+
Na página com o resultado da análise (onde é exibido a porcentagem de "saúde" do seu projeto), podemos pegar a `badge` do `Landscape`. No canto superior direito da tela, você encontra os botões abaixo:
78+
79+
<center>
80+
![](images/mstuttgart/snapshot_38.png)
81+
</center>
82+
83+
Clique na `badge` (onde está escrito *health*) e a seguinte janela será exibida:
84+
85+
<center>
86+
![](images/mstuttgart/snapshot_39.png)
87+
</center>
88+
89+
Selecione o texto da opção `Markdown` e cole-o no `README.md` do seu repositório. O meu `README.md` ficou assim:
90+
91+
```markdown
92+
# Codigo Avulso Test Tutorial
93+
[![Build Status](https://travis-ci.org/mstuttgart/codigo-avulso-test-tutorial.svg?branch=master)](https://travis-ci.org/mstuttgart/codigo-avulso-test-tutorial)
94+
95+
[![Coverage Status](https://coveralls.io/repos/github/mstuttgart/codigo-avulso-test-tutorial/badge.svg?branch=master)](https://coveralls.io/github/mstuttgart/codigo-avulso-test-tutorial?branch=master)
96+
97+
[![Code Health](https://landscape.io/github/mstuttgart/codigo-avulso-test-tutorial/master/landscape.svg?style=flat)](https://landscape.io/github/mstuttgart/codigo-avulso-test-tutorial/master)
98+
99+
```
100+
101+
Também é possível configurar o `Landscape` para que o mesmo exclua algum diretório/arquivo da análise (muito útil com arquivos de interface compilados, usando por quem trabalha com PyQt/PySide) entre outras opções, mas isso fica para um tutorial futuro.
102+
103+
Abaixo podemos ver as três `badges` que adicionamos em nosso projeto. Clique [aqui](https://github.com/mstuttgart/codigo-avulso-test-tutorial) para acessar o repositório.
104+
105+
<center>
106+
![](images/mstuttgart/snapshot_40.png)
107+
</center>
108+
109+
#### Conclusão
110+
111+
Pronto pessoal, agora temos o nosso repositório exibindo informações sobre os testes unitários, relatórios de testes e analises de qualidade de código. Isso não garante que seu projeto seja livre de falhas e *bugs*, mas te ajuda a evitá-los.
112+
113+
Vale lembrar que todas essas ferramentas ajudam muito, mas nada substitui o senso crítico e o hábito de sempre usar boas práticas durante o desenvolvimento. Por isso sempre busque aprender mais, estudar mais, ser humilde e ouvir quem tem mais experiência que você. Enfim, ser um programador e uma pessoa melhor a cada dia. Fica o conselho para todos nós, incluindo para este que vos escreve.
114+
115+
Espero que tenham gostado desta série de tutoriais. Obrigado por ler até aqui e até o próximo *post*.
116+
117+
**Publicado originalmente:** [python-com-unittest-travis-ci-coveralls-e-landscape-parte-4-de-4](http://codigoavulso.com.br/python-com-unittest-travis-ci-coveralls-e-landscape-parte-4-de-4.html)

content/python-com-unittest-travis-e-coveralls-parte-2-de-4.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -106,12 +106,6 @@ python:
106106
107107
sudo: required
108108
109-
install:
110-
- pip install flake8
111-
112-
before_script:
113-
- flake8 codigo_avulso_test_tutorial
114-
115109
script:
116110
- python setup.py test
117111
@@ -121,8 +115,6 @@ script:
121115
* `language`: podemos definir qual linguagem nosso projeto utiliza. Se este parâmetro não for incluso, o `Travis CI` irá considerar a linguagem `ruby` como *default*.
122116
* `python`: aqui definimos que os testes serão executados usando o Python 2.7 e se desejarmos, também podemos adicionar outras versões do Python.
123117
* `sudo`: usado para executar o `Travis CI` como permissão de usuário `root`. Necessário caso você deseje instalar alguma dependência usando o comando `apt-get install nomepacote`.
124-
* `install`: aqui vamos instalar as dependêcias do nosso projeto. Como o meu projeto não depende de nenhum módulo Python externo, vamos instalar, para fins de exemplo, o módulo `flake8`. Esse módulo serve para verificarmos se o nosso código está seguindo as normas da `PEP8`.
125-
* `before_script`: Aqui executamos `flake8` sobre o diretório `codigo_avulso_test_tutorial`, garantindo que os arquios `.py` contidos nesse repositório estão seguindo as normas da `PEP8`.
126118
* `script`: nessa `tag`, finalmente vamos executar nosso *script* de teste.
127119

128120
Dica: neste [link](http://lint.travis-ci.org/) você pode colar o código do seu arquivo `.travis.yml` para verificar se o mesmo está correto.

0 commit comments

Comments
 (0)