😽

pytestでカバレッジを計りながら開発したい

2022/10/25に公開

問題

  • pytestを使っている
  • テストカバレッジを計りながら開発したい
  • どうするか?

対応

pytest-cov を使う。
https://pypi.org/project/pytest-cov/

例えば、

├─src
│  └─domains
│      └─foo
└─test
import pytest

from src.domains.foo.domain import Domain as Foo


def test_foo():
    Foo()
class Domain:
    pass

の時、

> pytest --cov=src test
========================== test session starts ===========================
plugins: cov-4.0.0
collected 1 item                                                          

test\test_domain.py .                                               [100%] 

---------- coverage: platform win32, python 3.10.8-final-0 -----------     
Name                        Stmts   Miss  Cover
-----------------------------------------------
src\domains\foo\domain.py       2      0   100%
-----------------------------------------------
TOTAL                           2      0   100%


=========================== 1 passed in 0.10s ============================

となる。

class Domain:
    def execute(self):
        pass

の実装を加えると、

> pytest --cov=src test
========================== test session starts ===========================
plugins: cov-4.0.0
collected 1 item                                                          

test\test_domain.py .                                               [100%] 

---------- coverage: platform win32, python 3.10.8-final-0 -----------     
Name                        Stmts   Miss  Cover
-----------------------------------------------
src\domains\foo\domain.py       3      1    67%
-----------------------------------------------
TOTAL                           3      1    67%


=========================== 1 passed in 0.10s ============================ 

となる。

Discussion