def is_leap(year):
""" judgement is leap
"""
if year % 400 == 0 or (year % 100 != 0 and year % 4 == 0):
result = True
else:
result = False
return result
from nose.tools import *
import leap
class TestLeapYear(object):
"""TestLeapYear
leap モジュールのテストクラス
"""
def test_is_leap_01(self):
"""leap.is_leap の正常系テスト 01
"""
result = leap.is_leap(2000)
ok_(result)
def test_is_leap_02(self):
"""leap.is_leap の正常系テスト 02
"""
result = leap.is_leap(1900)
ok_(result == False)
このままテストしてみます。
% nosetests -v --with-cover --cover-package=leap --rednose test_leap.py
leap.is_leap の正常系テスト 01 ... passed
leap.is_leap の正常系テスト 02 ... passed
Name Stmts Miss Cover Missing
-------------------------------------
leap 5 0 100%
-----------------------------------------------------------------------------
2 tests run in 0.0 seconds (2 tests passed)
カバレッジ率が100%になってますね。
(year % 100 != 0 and year % 4 == 0)
上のパスを通ってないのに100%になっているのはまずいですね。
Perlのproveならブランチまでちゃんとカバーしてないことを教えてくれるのですが、
nosetestsでもプラグインが誰か用意してくれると思うので探してみます。
ありました。
nosexcover 1.0.7 : Python Package Index
Always look on the funny side of life: noseがbranch coverage(C1)に対応したようなので、jenkinsでレポートを作成した
% pip install nosexcover
Downloading/unpacking nosexcover
Downloading nosexcover-1.0.7.tar.gz
Running setup.py egg_info for package nosexcover
Requirement already satisfied (use --upgrade to upgrade): nose in /Users/callistoiv/works/msgpackrpc/smigrate/lib/python2.7/site-packages (from nosexcover)
Requirement already satisfied (use --upgrade to upgrade): coverage>=3.4 in /Users/callistoiv/works/msgpackrpc/smigrate/lib/python2.7/site-packages (from nosexcover)
Installing collected packages: nosexcover
Running setup.py install for nosexcover
Successfully installed nosexcover
Cleaning up...
-
- with-xcover --cover-branches をオプションに入れてテストを実行します。
% nosetests -v --with-xcover --cover-branches --cover-package=leap --rednose test_leap.py
leap.is_leap の正常系テスト 01 ... passed
leap.is_leap の正常系テスト 02 ... passed
Name Stmts Miss Branch BrPart Cover Missing
---------------------------------------------------
leap 5 0 2 0 100%
-----------------------------------------------------------------------------
2 tests run in 0.1 seconds (2 tests passed)
Branch、 BrPart ってカラムが追加されてますね〜
ただ、通過してないパスがあるのにカバレッジ率100%になっているのは気になる・・・・(´・ω・`)