測試核心#
注意
這完全複製自舊的 IPython wiki,目前正在開發中。本開發指南的許多資訊已過時。
IPython 透過其核心框架可以非常容易地建立包裝器核心。它需要擴充套件 Kernel 類並實現一組用於核心功能(如執行、歷史記錄等)的方法。也可以用您選擇的語言編寫一個功能齊全的核心,實現所有 zmq 埠的監聽器。
透過這些方法實現的任何核心的關鍵問題是確保它符合訊息規範。kerneltest 命令是一種測試已安裝核心是否符合訊息規範並驗證結果的方法。
kerneltest 工具#
kerneltest 工具是 IPython.testing 的一部分,也包含在類似於 iptest 的指令碼中。它需要 2 個引數 - 要測試的核心名稱和測試指令碼檔案。測試指令碼檔案應採用下一節中描述的 json 格式。
kerneltest python test_script.json
您還可以向命令傳遞一個可選的訊息規範版本。目前只支援版本 5,但隨著新版本的釋出,這可以用於根據特定版本的核心測試核心。
kerneltest python test_script.json 5
要測試的核心需要安裝並且 kernelspec 在使用者 IPython 目錄中可用。該工具將例項化核心並透過 ZMQ 傳送命令。對於在核心上執行的每個命令,該工具將驗證回覆以確保其符合訊息規範。在某些情況下,還會檢查輸出,但回覆總是返回並列印在控制檯上。這可以用於驗證除了符合訊息規範之外,核心還產生了正確的輸出。
測試指令碼檔案#
測試指令碼檔案是一個簡單的 json 檔案,用於指定要執行的命令和該命令要執行的測試程式碼。
{
"command":{
"test_code":<code>
}
}
對於訊息規範中的某些命令,例如 kernel_info,無需指定 test_code 引數。該工具會驗證它是否具有執行命令所需的所有輸入,如果發現缺少引數,則會在控制檯列印錯誤。由於驗證是內建的,並且只傳遞了必需的引數,因此可以在 json 檔案中新增額外的欄位用於測試文件。
{
"command":{
"test_name":"sample test",
"test_description":"sample test to show how the test script file is created",
"test_code":<code>
}
}
redis 核心的示例測試指令碼將如下所示
{
"execute":{
"test_code":"get a",
"comments":"test basic code execution"
},
"complete":{
"test_code":"get",
"comments":"test getting command auto complete"
},
"kernel_info":{
"comments":"simple kernel info check"
},
"single_payload":{
"test_code":"get a",
"comments":"test one payload"
},
"history_tail":{
"test_code":"get a",
"comments":"test tail history"
},
"history_range":{
"test_code":"get a",
"comments":"test range history"
},
"history_search":{
"test_code":"get a",
"comments":"test search history"
}
}