如何提高Python3的代码覆盖率

2024-04-27 05:20:45 发布

您现在位置:Python中文网/ 问答频道 /正文

unittest和覆盖率.py哦

def add_one(num: int):
    num = num + 1
    return num
from unittest import TestCase

from add_one import add_one


class TestAddOne(TestCase):

    def test_add_one(self):
        self.assertEqual(add_one(0), 1)
        self.assertNotEqual(add_one(0), 2)

以下是报道内容:

code coverage 33%

如何测试整个文件?你知道吗


Tags: frompyimportselfaddreturndef覆盖率
2条回答

假设测试文件名为test_one.py,请在同一目录中运行此命令:

coverage run  -m unittest test_one.py && coverage report

结果应类似于:

.
                                   
Ran 1 test in 0.000s

OK
Name          Stmts   Miss  Cover
                -
add_one.py        3      0   100%
test_one.py       6      0   100%
                -
TOTAL             9      0   100%

您从不调用test_add_one方法。你知道吗

注意函数定义是如何执行的,而不是主体。要运行测试,请添加__main__检查和TestSuite/TextTestRunnerhttps://docs.python.org/3/library/unittest.html

from unittest import TestCase, TestSuite, TextTestRunner
from add_one import add_one


class TestAddOne(TestCase):

    def test_add_one(self):
        self.assertEqual(add_one(0), 1)
        self.assertNotEqual(add_one(0), 2)

if __name__ == "__main__":
    suite = TestSuite()
    suite.addTest(TestAddOne("test_add_one"))

    TextTestRunner().run(suite)

结果

coverage run <file.py>
coverage html
# OR
coverage report -m

所有线路都经过测试。

相关问题 更多 >