Como usar o customization.py em Python corretamente?

Eu apenas comecei a usarCoverage.py módulo e decidimos fazer um teste simples para verificar como ele funciona.

Sample.py

def sum(num1, num2):
    return num1 + num2


def sum_only_positive(num1, num2):
    if num1 > 0 and num2 > 0:
        return num1 + num2
    else:
        return None

test.py

from sample import sum, sum_only_positive

def test_sum():
    assert sum(5, 5) == 10

def test_sum_positive_ok():
    assert sum_only_positive(2, 2) == 4

def test_sum_positive_fail():
    assert sum_only_positive(-1, 2) is None

Como você vê, todo o meu código é coberto por testes e py.test diz que todos eles são aprovados. Espero que o Coverage.py mostre 100% de cobertura. Bem não.

Bem, Coverage.py pode não ver o arquivo test.py, então copiei as funções de teste parasample.py e execute a Cobertura novamente:

Então eu adicionei este bloco de código:

if __name__ == "__main__":
    print(sum(2, 4))
    print(sum_only_positive(2, 4))
    print(sum_only_positive(-1, 3))

e removeu todas as funções de teste. Depois disso, Coverage.py mostra 100%:

Por que é tão? Coverage.py não deve mostrar cobertura de teste de código, não apenas cobertura de execução? Eu li um oficialPERGUNTAS FREQUENTES. para Coverage.py, mas não consegue encontrar a solução.
Como muitos usuários de SO estão familiarizados com o teste e a cobertura do código, espero que você possa me dizer onde estou enganado.

Eu tenho apenas um pensamento aqui: Coverage.py pode simplesmente observar quais linhas de código não são executadas, por isso devo escrever testes para essas linhas. Mas existem linhas que já são executadas, mas que não são cobertas com testes, portanto o Coverage.py falhará aqui.