我试图遵循David Sale {3}}的第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
计算保险范围。有没有办法禁用这种行为?
答案 0 :(得分:0)
您可以使用--coverage
参数仅测量给定路径的覆盖范围。在您的示例中,您需要运行
nose2 --with-coverage --coverage calculate
这将为您提供预期的输出:
..
----------------------------------------------------------------------
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%