Cobertura de código

Cobertura de código é uma métrica que define o quanto de seu código está sendo executado pelo seus testes. Quanto maior a cobertura, maior o número de arquivos estão sendo impactados pelos seus testes.

Temos um diretório atual com os seguintes arquivos:

.
├── __init__.py
└── soma.py
└── test_soma.py

1 directory, 3 files

No soma.py temos o conteúdo:


# coding: utf-8

def soma(a, b):
    if isinstance(a, basestring) or isinstance(b, basestring):
        raise ValueError(u'Somente números são permitidos')
    return a + b

E no test_soma.py:

# coding: utf-8

import pytest
from soma import soma

class TestSoma(object):

    def test_soma_numeros_positivos(self):
        assert soma(1, 1) == 2

    def test_soma_com_letras(self):
        with pytest.raises(ValueError) as error:
            soma('a', 'b')
            assert error.msg == u'Somente números são permitidos'
`

Mudamos os testes para usar o formato do py.test, vamos instalar o pytest-coverage para analisar a cobertura que tem o nosso código.

>> pip install pytest-coverage

Agora vamos medir qual a porcentagem de cobertura tem o nosso arquivo soma.py baseado nos testes que estão no test_soma.py:

>> py.test --cov soma.py test_soma.py
platform darwin -- Python 2.7.11, pytest-2.9.2, py-1.4.31, pluggy-0.3.1
rootdir: /Users/lucasmagnum/labschool/testes-iniciantes, inifile:
plugins: cov-2.3.0
collected 2 items

test_soma.py ..

---------- coverage: platform darwin, python 2.7.11-final-0 ----------
Name      Stmts   Miss  Cover
-----------------------------
soma.py       4      0   100%


================================================================= 2 passed in 0.07 seconds =================================================================

Como nosso arquivo só contém uma função e escrevemos testes que passam por toda a função, temos 100% de cobertura =)

results matching ""

    No results matching ""