網站首頁 編程語言 正文
一、前言
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
相關推薦
- 2022-07-22 Redis主從復制關系實現(Linux系統)
- 2023-12-08 Can‘t open the append-only file: Permission denied
- 2022-09-29 淺談音視頻?pts?dts基本概念及理解_其它綜合
- 2022-11-28 C語言中getchar()函數的用法小結_C 語言
- 2022-04-18 uniapp h5去掉默認的頂部導航
- 2022-07-04 Python如何查看兩個數據庫的同名表的字段名差異_python
- 2023-04-20 react:理解“為了在回調中使用 `this`,這個綁定是必不可少的”
- 2022-06-28 使用?Docker?Compose?構建復雜的多容器?App的方法_docker
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支