一、首先在我的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,會干擾我們的統計結果。留給大家自行學習深入,大家可以上網查一下解決方法~~