網站首頁 編程語言 正文
一、前言
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-04-30 C語言實現考勤管理系統_C 語言
- 2023-03-23 Python?eval()與exec()函數使用介紹_python
- 2022-04-25 基于Matplotlib?調用?pyplot?模塊中?figure()?函數處理?figure圖形對
- 2022-04-09 Python中緩存lru_cache的基本介紹和講解_python
- 2022-03-21 C#中使用CliWrap讓命令行交互舉重若輕_C#教程
- 2022-07-11 go語言實現二叉樹的序例化與反序列化_Golang
- 2023-09-17 Git “強制“提交代碼
- 2022-08-02 C#如何自定義multipart/form-data的解析器_C#教程
- 最近更新
-
- 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同步修改后的遠程分支