在VS Code中對Python進行單元測試

在VS Code中對Python進行單元測試

Python擴展支持使用Python的內置unittest框架以及pytestNose進行單元測試要使用pytest和Nose,必須將它們安裝到當前的Python環境中(即,在pythonPath設置中標識的環境,請參閱環境)。html

使用Python:Discover Unit Tests根據當前所選測試框架的發現模式掃描項目以進行測試(請參閱測試發現。一旦發現,VS Code提供了多種運行測試的方法(請參閱運行測試)。python

單元測試輸出顯示在Python Test Log面板中,包括未安裝測試框架時致使的錯誤。git

提示:一個包含各類單元測試的有用存儲庫,應用於不一樣的排序算法,是https://github.com/gwtw/py-sortinggithub

啓用和配置測試框架

默認狀況下禁用單元測試。要啓用單元測試,請將如下設置之一設置爲true:正則表達式

"python.unitTest.unittestEnabled": false, "python.unitTest.pyTestEnabled": true, "python.unitTest.nosetestsEnabled": false, 

注意:一次只啓用一個測試框架。算法

上面的示例啓用了pytest,使unittest和Nose禁用。json

每一個框架還具備特定的配置設置,如如下部分所述:數組

Unittest配置設置

設置
(python.unitTest。)
默認 描述
unittestEnabled false 指定是否爲單元測試啓用UnitTest。
unittestArgs ["-v", "-s", ".", "-p", "*test*.py"] 傳遞給unittest的參數,其中由空格分隔的每一個元素是列表中的單獨項。有關默認值的說明,請參見下文。
CWD 空值 指定單元測試的可選工做目錄。
outputWindow "Python Test Log" 用於單元測試輸出的窗口。
promptToConfigure true 指定VS代碼是否在發現潛在測試時提示配置測試框架。
DEBUGPORT 3000 用於調試UnitTest測試的端口號。
autoTestDiscoverOnSaveEnabled true 指定在保存單元測試文件時是啓用仍是禁用自動運行測試發現。

UnitTest的默認參數以下:框架

  • -v設置默認詳細程度。刪除此參數以得到更簡單的輸出。
  • -s .指定用於發現測試的起始目錄。若是您在「test」文件夾中進行了測試,則能夠將其更改成-s test"-s", "test"在arguments數組中)。
  • -p *test*.py是用於查找測試的發現模式。在這種狀況下,它.py是包含單詞「test」 的任何文件。若是以不一樣的方式命名測試文件,例如在每一個文件名後附加「_test」,則使用相似於*_test.py數組的相應參數的模式

要在第一次失敗時中止測試運​​行,請將fail fast選項添加"-f"到arguments數組中。編輯器

有關完整的可用選項集,請參閱unittest命令行界面

Pytest配置設置

設置
(python.unitTest。)
默認 描述
pyTestEnabled false 指定是否爲單元測試啓用PyTest。
pyTestPath "py.test" PyTest的路徑。若是PyTest位於當前環境以外,請使用完整路徑。
pyTestArgs [] 傳遞給PyTest的參數,其中由空格分隔的每一個元素都是列表中的單獨項。請參閱PyTest命令行選項

您還可使用PyTest Configuration中pytest.ini所述文件配置pytest 

注意 若是安裝了pytest-cov coverage模塊,則VS Code在調試時不會在斷點處中止,由於pytest-cov使用相同的技術來訪問正在運行的源代碼。要防止此行爲,請--no-covpyTestArgs調試測試時包括(有關更多信息,請參閱pytest-cov文檔中的Debuggers和PyCharm。)

鼻子配置設置

設置
(python.unitTest。)
默認 描述
nosetestsEnabled false 指定是否爲單元測試啓用Nose。
nosetestPath "nosetests" 鼻子的路徑。若是Nose位於當前環境以外,請使用完整路徑。
nosetestArgs [] 傳遞給Nose的參數,其中由空格分隔的每一個元素都是列表中的單獨項。請參閱鼻子使用選項

您還可使用Nose配置中所述.nosercnose.cfg文件配置nose 

測試發現

VS Code使用當前啓用的單元測試框架來發現測試。您可使用Python:Discover Unit Tests命令隨時觸發測試發現使用Unittest,您能夠將 python.unittest.autoTestDiscoverOnSaveEnabled設置設置爲true在保存測試文件時運行測試發現。

測試發現應用當前測試框架的arguments選項中指定的發現模式。例如,unittest的默認參數包括-s . -p *test*.py,意味着unittest以項目文件夾(-s .開頭遞歸查找名稱與*test*.pypattern(-p *test*.py匹配的全部文件您能夠在以後指定不一樣的起始文件夾-s,和/或以後指定其餘模式-p

Pytest,它的一部分,具備用於肯定其根文件夾和圖案,如在所描述的算法pytest配置

對於nose,使用-w=<folder>-m=<regex>開關指定模式匹配的起始文件夾和正則表達式(請參閱Nose選項)。

提示:有時不會發現放置在子文件夾中的單元測試,由於沒法導入此類測試文件。要使它們可導入,請嘗試放置__init__.py在該文件夾中命名的空文件

運行測試

使用如下任何操做運行測試:

  • 選擇Run Tests狀態欄,而後選擇一個像這樣的命令Run All TestsRun Failed Unit Tests

  • 在資源管理器中右鍵單擊文件並選擇Run Unit Tests,該文件在該文件中運行測試。

  • 打開測試文件,而後選擇Run Test出如今測試類或方法上方代碼鏡頭。此命令僅運行類中的那些測試或分別運行該測試方法。

    編輯器中的Python單元測試命令

  • 命令選項板中,選擇任何單元測試命令:

    命令選項板上的Python單元測試命令

命令 描述
運行全部單元測試 在工做區及其子文件夾中搜索並運行全部單元測試。
運行當前單元測試文件 在當前在編輯器中查看的文件中運行測試。
運行失敗的單元測試 從新運行先前測試運行中失敗的任何測試。若是還沒有運行任何測試,則運行全部測試。
運行單元測試文件... 提示輸入特定的測試文件名,而後在該文件中運行測試。
運行單元測試方法...... 提示要運行的測試名稱,爲測試名稱提供自動完成功能。
顯示單元測試輸出 打開Python Test Log面板,其中包含有關傳遞和失敗測試以及錯誤和跳過測試的信息。

調試測試

由於單元測試自己就是源代碼,因此它們很容易出現代碼缺陷,就像它們測試的生產代碼同樣。所以,您可能偶爾須要在調試器中單步執行單元測試。

Python的:調試全部測試Python的:調試單元測試方法...命令(在命令面板和狀態欄菜單)分別啓動調試器的全部測試和單一的測試方法。

下一步

    • Python環境 - 控制使用哪一個Python解釋器進行編輯和調試。
    • 設置參考 - 探索VS Code中與Python相關的全部設置。
相關文章
相關標籤/搜索