簡體   English   中英

如何提高 Python3 的代碼覆蓋率

[英]How can I improve code coverage of Python3

使用unittest和 Coverage.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)

這是覆蓋范圍:

代碼覆蓋率 33%

如何測試整個文件?

假設您的測試文件名為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方法。

注意 function 定義是如何執行的,而不是正文。 要運行測試,請添加__main__檢查和TestSuite / TextTestRunner ( https://docs.python.org/3/library/unittest.ZFC35FDC70D5FC69D269883A822C7A5E3 )

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

所有線路都經過測試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM