日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

詳解Python單元測試的兩種寫法_python

作者:什么都干的派森 ? 更新時間: 2022-08-30 編程語言

一、前言

python的兩個單元測試包分別是 doctest 和 unittest,這兩個包的使用起來各有長處,適用于不同的場景

  • doctest:直接寫在方法體中,利用了 python 動態語言的特性,書寫方式簡單明了,前提是項目不要太大,如果項目復雜代碼量大,再加上寫在方法體中的單元測試,整體就會看起來有些臃腫,因此 doctest 適用于代碼量不大的普通項目
  • unittest:一般寫在獨立文件中,與 spring 的單元測試有點像,項目結構清晰,不過簡單項目中測試一些小功能的話實屬dark不必了

二、實現

先寫一個待測試的方法

def add(num1, num2):
    return num1 + num2

1.doctest

def add(num1, num2):
    """
    直接寫在待測方法中
    
    >>> add(14, 5)
    19
    >>> add(14, 5) > 1
    True
    
    >>> add(20, 30, 70)
    Traceback (most recent call last):
        ...
    TypeError: add() takes 2 positional arguments but 3 were given
    """
    return num1 + num2
if __name__ == "__main__":
    import doctest
    doctest.testmod()

運行上面的代碼什么都不會輸出,因為預測結果全部正確,只有在預測結果錯誤的時候才會給提示
ps:

  • add(14, 5) 為測試方法,19 為預測結果
  • add(14, 5) > 1 為測試方法,True 為預測結果
  • add(20, 30, 70) 為測試方法,Traceback (most recent call last): 為異常拋出的第一句話【錯誤原因】,TypeError: add() takes 2 positional arguments but 3 were given 為異常拋出的最后一句話【異常類型:解釋說明】,中間三個點省略了異常中的文件路徑信息

2.unittest

import unittest
# 引入上面的待測試方法
from src.main.add import add
class TestStatisticalFunctions(unittest.TestCase):
    def test_add(self):
        self.assertEqual(add(14, 5), 19)            # 斷言 add(14, 5) 的結果為 19
        self.assertTrue(add(14, 5) > 1, True)       # 斷言 add(14, 5) > 1 的結果為 True
        with self.assertRaises(TypeError):          # 斷言 add(20, 30, 70) 拋出 TypeError 異常
            add(20, 30, 70)
if __name__ == '__main__':
    unittest.main()

同樣,運行上面的代碼什么都不會輸出,因為預測結果全部正確,只有在預測結果錯誤的時候才會給提示

原文鏈接:https://blog.csdn.net/weixin_43721000/article/details/125649461

欄目分類
最近更新