Python錯誤測試與調試——文檔測試

Doctest 通過解析文檔字符串(docstring)中的交互式 Python 代碼片段(以?>>>開頭)進行測試,驗證代碼輸出是否與預期一致。測試用例直接嵌入代碼中,實現“文檔即測試”

核心語法:

def func():

? ? ?"""示例文檔字符串

? ? ?>>> func() 預期輸出

? ? ?"""

? ? ?pass

doctest非常有用,不但可以用來測試,還可以直接作為示例代碼。通過某些文檔生成工具,就可以自動把包含doctest的注釋提取出來。用戶看文檔的時候,同時也看到了doctest。

練習

對函數fact(n)編寫doctest并執行:

def fact(n):'''Calculate 1*2*...*n>>> fact(1)1>>> fact(10)?>>> fact(-1)?'''if n < 1:raise ValueError()if n == 1:return 1return n * fact(n - 1)if __name__ == '__main__':import doctestdoctest.testmod()

這里呢所建文件夾不能是doctest.py,否則會因為自定義腳本與 Python 標準庫重名導致報錯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/98226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/98226.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/98226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c#核心筆記

111&#xff0c;面向對象 1&#xff0c;面向過程編程&#xff1a;是一種以過程為中心的編程思想分析出解決問題所需要的步驟然后用函數把步驟一步一步實現使用的時候&#xff0c;一個一個依次調用。 2&#xff0c;面向對象編程&#xff1a;面向對象是一種對現實世界理解和抽象的…

【MySQL】從零開始了解數據庫開發 --- 初步認識數據庫

永遠記住&#xff0c;你的存在是有意義的&#xff0c; 你很重要&#xff0c; 你是被愛著的&#xff0c; 而且你為這個世界帶來了無可取代的東西。 -- 麥克西 《男孩、鼴鼠、狐貍和馬》-- 從零開始了解數據庫開發安裝MySQL什么是數據庫常見主流數據庫初步了解SQL語句存儲引擎安裝…

Altium Designer(AD24)切換工作界面為淺灰色的方法

??《專欄目錄》 目錄 1,概述 2,界面介紹 1,概述 本文演示AD24軟件黑色界面切換為淺灰色的方法。 2,界面介紹 第1步:點擊設置小圖標,然后點擊View 第2步:在UI Theme,點擊Current旁邊的Altium Dark Gtay ,在下拉選項中選擇Altium Light Gtay,然后點擊OK確認 第4步…

SDRAM詳細分析—07 存儲器陣列尋址

大家好,這里是大話硬件 這篇文章將分析實際SDRAM內部是如何進行尋址以及內存單元分布方式。 根據前面的內容,從小容量到大容量進行迭代分析。 1. 1bit容量 這個存儲單元只能存儲1個bit位。假設現在需要8bit內存容量顆粒,則需要8顆這樣的存儲器件。 2. 4bit容量 這個存儲…

【GitOps】Argo CD高級操作鉤子

Argo CD高級操作鉤子 文章目錄Argo CD高級操作鉤子資源列表一、Argo CD鉤子1.1、鉤子介紹1.2、構建的幾個執行階段1.3、鉤子刪除策略1.4、示例二、鉤子演示2.1、創建GitLab公共倉庫2.2、Argo CD創建Application2.3、同步&#xff08;SYNC&#xff09;資源列表 操作系統配置主機…

諳流 ASK 技術解析(一):秒級擴容

諳流 ASK 是諳流團隊自主研發的國產新一代云原生流平臺&#xff0c;與 Apache Kafka 100% 協議兼容&#xff0c;全棧自主可控&#xff0c;專注私有化部署與行業場景賦能。傳統Kafka存儲之殤IO模型缺陷每個分區對應獨立文件&#xff0c;采用單分區異步批量順序寫機制。當多分區并…

從挑西瓜到樹回歸:用生活智慧理解機器學習算法

一、生活中的決策樹&#xff1a;媽媽的挑瓜秘籍夏天的菜市場里&#xff0c;媽媽總能精準挑出最甜的西瓜。她的秘訣是一套簡單的決策流程&#xff1a;先看色澤&#xff0c;青綠有光澤的優先&#xff1b;再敲一敲&#xff0c;聲音沉悶的更可能熟&#xff1b;最后摸硬度&#xff0…

SpringBoot+PDF.js實現按需分片加載(包含可運行樣例源碼)

SpringBootPDF.js實現按需分片加載前言一、實現思路與實現效果1.1 pdf.js的分片加載的實現思路1.2 pdf分片加載的效果二、前端項目2.1 項目引入2.2 核心代碼2.3 項目運行三、后端項目3.1 項目結構3.2 核心代碼3.3 項目運行四、項目運行效果4.1 首次訪問4.2 分片加載五、項目優化…

常見Bash腳本漏洞分析與防御

引言 在Unix/Linux系統中&#xff0c;Bash腳本因其簡潔、高效而成為自動化任務、系統管理和快速原型開發的首選工具。然而&#xff0c;Bash的強大功能和其獨特的語法特性&#xff0c;也為安全漏洞埋下了隱患。許多開發者在追求便捷性的過程中&#xff0c;無意間引入了命令注入、…

JAVA快速學習(二)

類與對象因為本質是寫python的所以類與對象的概念就不贅述了&#xff0c;先看java中類與對象的創建方式public class Main {public static void main(String[] args) {Cat cat new Cat(); // Cat cat new Cat("zh",18); 這樣直接不對,這樣傳參就需要寫構造函數…

登錄優化(雙JWT+Redis)

流程 前端 → 后端 → 攔截器 → 限流 → AOP → Controller → 刷新 → 退出 前端登錄并獲取雙 JWT 1、前端:用戶在前端輸入用戶名和密碼,調用 /auth/login 接口。 fetch("/auth/login", {method: "POST",headers: {"Content-Type": &quo…

【雜類】Spring 自動裝配原理

這張圖&#xff0c;??正是理解現代 Spring Boot 自動配置的鑰匙??。它指出的 AutoConfiguration.imports 文件&#xff0c;是 Spring Boot 2.7 之后的新標準&#xff0c;比老式的 spring.factories 更簡潔。咱們就從這個文件開始說。一、自動配置是啥&#xff1f;為啥需要它…

【CSS,DaisyUI】自定義選取內容的顏色主題

當你的網站使用了多個主題&#xff0c;比如 light/dark。當用戶選擇一段文本&#xff0c;常常會出現一個主題沒問題&#xff0c;另一個主題顏色怪怪的。是因為選擇區域的主題通常沒有變化&#xff0c;導致與當前主題不配合。 下面四種方法可解決這個問題&#xff1a; The probl…

Linux網絡接口命名詳解:從eth0到ens33

在Linux系統中&#xff0c;網絡接口的命名方式直接影響管理員對設備的理解與管理。從早期的eth0、wlan0到現代的ens33、enp0s3、eno1&#xff0c;Linux網絡接口命名規則經歷了顯著的演變。一、Linux網絡接口命名的歷史與演變 Linux網絡接口命名的歷史可以分為兩個主要時代&…

如何在 FastAPI 中巧妙覆蓋依賴注入并攔截第三方服務調用?

url: /posts/2d992ef9e8962dc0a4a0b5348d486114/ title: 如何在 FastAPI 中巧妙覆蓋依賴注入并攔截第三方服務調用? date: 2025-09-06T03:34:14+08:00 lastmod: 2025-09-06T03:34:14+08:00 author: cmdragon summary: FastAPI 的依賴注入系統允許解耦復雜依賴關系,便于代碼重…

linux上nexus安裝教程

下載頁面 https://help.sonatype.com/en/download.html選擇 Unix/Linux Arch64 一欄點擊下載; 選擇非root 組的用戶登錄linux &#xff0c;此處注意必須保證linux內存大于4G&#xff0c;否則無法啟動 解壓nexus包 tar -xzvf nexus-3.83.2-01-linux-aarch_64.tar.gz進入bin目錄 …

大語言模型的“思考”邏輯:從Token生成到上下文理解的內部流程

當你問“明天天氣如何”時&#xff0c;AI在“想”什么&#xff1f;當你向ChatGPT或文心一言輸入“明天北京天氣如何”&#xff0c;模型秒速回復“明天北京晴轉多云&#xff0c;氣溫15-25℃”——這個過程看似“思考”&#xff0c;實則是一套精密的“數據處理流水線”。大語言模…

Linux筆記---TCP套接字編程

1. 核心接口 1.1 監聽連接&#xff1a;listen() 使 TCP 套接字進入被動監聽狀態&#xff0c;準備接受客戶端連接&#xff08;僅服務器端使用&#xff09;。 #include <sys/socket.h>int listen(int sockfd, int backlog); 參數&#xff1a; sockfd&#xff1a;已綁定…

從零開始的python學習——文件

? ? ? ? ? づ?ど &#x1f389; 歡迎點贊支持&#x1f389; 個人主頁&#xff1a;勵志不掉頭發的內向程序員&#xff1b; 專欄主頁&#xff1a;python學習專欄&#xff1b; 文章目錄 前言 一、文件是什么 二、文件路徑 三、文件操作 &#xff08;1&#xff09;打開文件 …

set與multset的區別;less greater 函數對象實現比較 作為排序依據

Set 和 multiset 特點 set中元素插入過程是按排序規則插入&#xff0c;所以不能指定插入位置。set不可以直接存取元素。&#xff08;不可以使用at.(pos)與[]操作符&#xff09;。multiset與set的區別&#xff1a;set支持唯一鍵值&#xff0c;每個元素值只能出現一次&#xff1b…