unittest 單元測試和coverage覆蓋率 極簡實例

一、首先在我的temp\temp_test1\下新建一個py文件,名字爲divi.py

文件中的內容爲:

def divi(a, b):

    if type(a) and type(b) not in (int, float):
        return False
    if b == 0:
        return False
    else:
        result = a/b
        return result

 二、同級目錄下,也可以不同級。創建test_divi.py,Terminal中輸入pip install ddt安裝,安裝完成後,編輯py文件內容如下:

import ddt
import unittest
from temp_test1.divi import divi


data = [
    {'num_a': 1, 'num_b': 2, 'result': 0.5},
    {'num_a': 1, 'num_b': 0, 'result': False},
    {'num_a': 4, 'num_b': 2, 'result': 2.0},
    {'num_a': 5.2, 'num_b': 2,  'result': 2.6},
    {'num_a': 5.2, 'num_b': 3, 'result': 1.73},
]

@ddt.ddt
class TestDivi(unittest.TestCase):
    def setUp(self):
        print('======test start======')

    def tearDown(self):
        print('======test end======')

    @ddt.data(*data)
    def test_divi(self, data):
        self.assertEqual(divi(data['num_a'], data['num_b']), data['result'])

三、執行進行單元測試,驗證divi方法在不同情況下的處理和代碼的健壯性。可以看到有一個是失敗的,因爲返5.2/3返回的是1.7333333333333334 不等於我的預期1.73

四、 安裝coverage模塊,進行代碼覆蓋率檢查。在Terminal中輸入pip install coverage安裝

安裝成功後,進入Terminal終端,進入到代碼目錄中,執行coverage run test_divi.py,發現報錯了

報錯原因是因爲找不到,因此我們添加環境變量,打開環境變量,添加PYTHONPATH,把路徑C:\Users\songlihui\PycharmProjects\temp\temp_test1添加進去保存

 繼續執行coverage run test_divi.py,發現還是報剛纔的錯,就是配置環境配置完成後,沒能在終端模式中立即生效的原因。

我們換一種方式,在代碼頂部加一段下面紅框中的話

繼續執行coverage run test_divi.py,發現成功了

繼續接着執行coverage html

 

然後進入到test_divi.py文件目錄中,我們發現多了一個叫htmlcov的文件夾

 

打開文件夾中的index.html,我們看到了代碼覆蓋率。不過裏面有一個ddt,會干擾我們的統計結果。留給大家自行學習深入,大家可以上網查一下解決方法~~

 

發佈了78 篇原創文章 · 獲贊 310 · 訪問量 23萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章