如何 运行 使用覆盖率 API 进行单元测试
How to run unittest tests using coverage API
我正在尝试使用 coverage
-API (https://coverage.readthedocs.io/en/6.3.2/api.html#api).
生成覆盖率报告
链接页面上描述的简单用例告诉我将执行的代码包装在他们提供的代码片段中。我正在使用 unittest.main()
来执行测试。下面的代码运行没有错误,但既没有创建任何报告信息,也没有执行 print("Done.")
。
我猜 unittest.main()
在途中某处调用了 sys.exit()
?如何使用 API 执行所有单元测试?
例子
import coverage
import unittest
def func(input):
return input
class testInput(unittest.TestCase):
def test_func(self):
self.assertEqual(func(1), 1)
if __name__ == '__main__':
cov = coverage.Coverage()
cov.start()
unittest.main()
cov.stop()
cov.save()
cov.html_report()
print("Done.")
是的,看起来 unittest.main() 正在调用 sys.exit()。您确定要使用覆盖率 API 吗?您可以跳过覆盖范围和大部分单元测试:
# foo.py
import unittest
def func(input):
return input
class testInput(unittest.TestCase):
def test_func(self):
self.assertEqual(func(1), 1)
然后:
$ python -m coverage run -m unittest foo.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
$ python -m coverage report -m
Name Stmts Miss Cover Missing
--------------------------------------
foo.py 6 0 100%
--------------------------------------
TOTAL 6 0 100%
我正在尝试使用 coverage
-API (https://coverage.readthedocs.io/en/6.3.2/api.html#api).
链接页面上描述的简单用例告诉我将执行的代码包装在他们提供的代码片段中。我正在使用 unittest.main()
来执行测试。下面的代码运行没有错误,但既没有创建任何报告信息,也没有执行 print("Done.")
。
我猜 unittest.main()
在途中某处调用了 sys.exit()
?如何使用 API 执行所有单元测试?
例子
import coverage
import unittest
def func(input):
return input
class testInput(unittest.TestCase):
def test_func(self):
self.assertEqual(func(1), 1)
if __name__ == '__main__':
cov = coverage.Coverage()
cov.start()
unittest.main()
cov.stop()
cov.save()
cov.html_report()
print("Done.")
是的,看起来 unittest.main() 正在调用 sys.exit()。您确定要使用覆盖率 API 吗?您可以跳过覆盖范围和大部分单元测试:
# foo.py
import unittest
def func(input):
return input
class testInput(unittest.TestCase):
def test_func(self):
self.assertEqual(func(1), 1)
然后:
$ python -m coverage run -m unittest foo.py
.
----------------------------------------------------------------------
Ran 1 test in 0.000s
OK
$ python -m coverage report -m
Name Stmts Miss Cover Missing
--------------------------------------
foo.py 6 0 100%
--------------------------------------
TOTAL 6 0 100%