2

David Sale のTesting Pythonの第 3 章に従おうとしていますが、nose2代わりにnosetests. これまでのところ、次のように書いていcalculate.pyます。

class Calculate(object):
    def add(self, x, y):
        if type(x) == int and type(y) == int:
            return x + y
        else:
            raise TypeError("Invalid type: {} and {}".format(type(x), type(y)))

if __name__ == '__main__':      # pragma: no cover
    calc = Calculate()
    result = calc.add(2, 2)
    print(result)

および、サブディレクトリtest内のtest_calculator.py:

import unittest
from calculate import Calculate

class TestCalculate(unittest.TestCase):
    def setUp(self):
        self.calc = Calculate()

    def test_add_method_returns_correct_result(self):
        self.assertEqual(4, self.calc.add(2,2))

    def test_add_method_raises_typeerror_if_not_ints(self):
        self.assertRaises(TypeError, self.calc.add, "Hello", "World")


if __name__ == '__main__':
    unittest.main()

nose2 --with-coverageメインディレクトリで実行すると、

..
----------------------------------------------------------------------
Ran 2 tests in 0.002s

OK
----------- coverage: platform linux, python 3.5.2-final-0 -----------
Name                     Stmts   Miss  Cover
--------------------------------------------
calculate.py                 5      0   100%
test/test_calculate.py      11      1    91%
--------------------------------------------
TOTAL                       16      1    94%

test/test_calculate.pyテスト プログラムとメイン プログラムのカバレッジが計算される理由がわかりませんcalculate.py。この動作を無効にする方法はありますか?

4

1 に答える 1