2016-11-07 10 views
1

David SalesのTesting Pythonの第3章に従いますが、nosetestsではなくnose2を使用しています。Pythonのnose2 --with-coverageがテスト自体のカバレッジを示しています

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) 

と、サブディレクトリtesttest_calculator.pyに:これまでのところ私はcalculate.pyを書いている私は、メインのディレクトリにnose2 --with-coverageを実行する場合

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() 

、私は

.. 
---------------------------------------------------------------------- 
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。この動作を無効にする方法はありますか?

答えて

0

パラメータ--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% 
:あなたの例では、これはあなたに期待される出力が得られます

nose2 --with-coverage --coverage calculate 

を実行する必要があります

関連する問題