如何在VSCode中配置Python單元測試?pytest框架集成

vscode中配置python單元測試的關(guān)鍵在于正確設(shè)置pytest和相關(guān)參數(shù)。首先,安裝python擴(kuò)展和pytest庫;其次,配置settings.json文件啟用pytest并指定工作目錄;接著,編寫符合命名規(guī)范的測試用例;最后,通過側(cè)邊欄或右鍵菜單運(yùn)行測試。若測試未被發(fā)現(xiàn),需檢查文件名、類/函數(shù)名是否以test開頭,workingDirectory是否正確,以及子目錄是否包含__init__.py文件。調(diào)試測試用例可通過設(shè)置斷點(diǎn)并在launch.json中配置調(diào)試器實(shí)現(xiàn)。此外,使用pytest.ini文件可自定義行為,如修改測試文件匹配規(guī)則或添加命令行選項(xiàng)生成覆蓋率報告。

如何在VSCode中配置Python單元測試?pytest框架集成

配置Python單元測試,特別是使用pytest框架,在vscode中其實(shí)挺簡單,關(guān)鍵在于正確配置測試發(fā)現(xiàn)和運(yùn)行的參數(shù),讓VSCode能順利找到并執(zhí)行你的測試用例。

如何在VSCode中配置Python單元測試?pytest框架集成

解決方案

  1. 安裝必要的擴(kuò)展: 首先,確保你安裝了VSCode的Python擴(kuò)展。這是基礎(chǔ),沒有它,很多功能都無法正常使用。此外,可以考慮安裝pytest擴(kuò)展,雖然不是必須,但能提供一些額外的pytest集成功能,比如更友好的測試結(jié)果展示。

    立即學(xué)習(xí)Python免費(fèi)學(xué)習(xí)筆記(深入)”;

    如何在VSCode中配置Python單元測試?pytest框架集成

  2. 安裝pytest: 在你的Python環(huán)境中安裝pytest。打開終端,輸入 pip install pytest。如果你的項(xiàng)目使用了虛擬環(huán)境,記得先激活虛擬環(huán)境。

  3. 配置settings.json: 這是核心步驟。打開VSCode的設(shè)置(File -> Preferences -> Settings),搜索Python ? Testing。你需要配置以下幾個關(guān)鍵設(shè)置:

    如何在VSCode中配置Python單元測試?pytest框架集成

    • Python ? Testing: Testing Enabled: 確保這個選項(xiàng)是勾選的。
    • Python ? Testing: Pytest Enabled: 勾選,啟用pytest作為測試框架。
    • Python ? Testing: Working Directory: 設(shè)置你的項(xiàng)目根目錄。這告訴VSCode從哪里開始尋找測試文件。
    • Python ? Testing: Pytest Path: 如果pytest沒有在你的默認(rèn)路徑下,你需要指定pytest的可執(zhí)行文件路徑。通常情況下,VSCode會自動檢測到,但如果不行,手動指定一下。
    • Python ? Testing: AutodiscoveryEnabled: 啟用自動發(fā)現(xiàn)測試。

    也可以直接編輯settings.json文件,加入以下內(nèi)容:

    {     "python.testing.pytestEnabled": true,     "python.testing.unittestEnabled": false,     "python.testing.workingDirectory": "${workspaceFolder}", }
  4. 編寫測試用例: pytest默認(rèn)會查找以test_*.py或*_test.py命名的文件,以及類和函數(shù)名以test開頭的測試用例。例如:

    # test_example.py def add(x, y):     return x + y  def test_add():     assert add(1, 2) == 3     assert add(0, 0) == 0     assert add(-1, 1) == 0
  5. 運(yùn)行測試: 配置完成后,VSCode會在側(cè)邊欄顯示測試面板。點(diǎn)擊運(yùn)行按鈕,就可以執(zhí)行你的測試用例了。你也可以在代碼編輯區(qū)右鍵,選擇 “Run Test” 來運(yùn)行單個測試用例。

為什么VSCode的測試發(fā)現(xiàn)功能找不到我的測試用例?

這可能是最常見的問題。檢查以下幾點(diǎn):

  • 文件名和函數(shù)/類名是否符合pytest的命名規(guī)范? 確保你的測試文件以test_*.py或*_test.py命名,測試函數(shù)或類以test開頭。
  • settings.json中的workingDirectory是否正確? 確保指向你的項(xiàng)目根目錄。
  • 是否有__init__.py文件? 如果你的測試用例分布在多個子目錄中,確保每個子目錄都有一個__init__.py文件,即使它是空的。這能讓Python將這些目錄識別為包。
  • 確認(rèn)pytest已經(jīng)正確安裝在當(dāng)前所使用的Python環(huán)境中。 激活虛擬環(huán)境,然后使用pip list確認(rèn)pytest存在。

如果以上都檢查過了,仍然有問題,嘗試重啟VSCode,有時候能解決一些玄學(xué)問題。

如何調(diào)試pytest測試用例?

調(diào)試測試用例是提高效率的關(guān)鍵。VSCode提供了強(qiáng)大的調(diào)試功能,可以讓你單步執(zhí)行測試代碼,查看變量值,定位問題。

  1. 設(shè)置斷點(diǎn): 在你想要調(diào)試的代碼行設(shè)置斷點(diǎn)。

  2. 啟動調(diào)試: 在VSCode的調(diào)試面板(Run and Debug)中,選擇 “Python: Current File (Integrated Terminal)” 或類似的配置。如果沒有,點(diǎn)擊 “create a launch.json file” 創(chuàng)建一個。

  3. 修改launch.json: 確保launch.json文件中配置了正確的Python解釋器和要調(diào)試的文件。一個簡單的launch.json配置可能如下所示:

    {     "version": "0.2.0",     "configurations": [         {             "name": "Python: Current File (Integrated Terminal)",             "type": "python",             "request": "launch",             "program": "${file}",             "console": "integratedTerminal",             "justMyCode": false,             "env": {                 "PYTHONPATH": "${workspaceFolder}"             }         }     ] }

    justMyCode設(shè)置為false可以讓你調(diào)試第三方庫的代碼,PYTHONPATH確保VSCode能找到你的項(xiàng)目代碼。

  4. 運(yùn)行調(diào)試: 點(diǎn)擊調(diào)試面板的綠色箭頭,啟動調(diào)試。VSCode會在斷點(diǎn)處暫停,你可以使用調(diào)試工具欄上的按鈕來單步執(zhí)行、跳過、繼續(xù)等。

如何使用pytest.ini文件配置pytest行為?

pytest.ini文件允許你自定義pytest的行為,比如指定測試文件的命名規(guī)則、添加命令行選項(xiàng)等。

  1. 創(chuàng)建pytest.ini文件: 在你的項(xiàng)目根目錄下創(chuàng)建一個名為pytest.ini的文件。

  2. 配置pytest.ini: 在pytest.ini文件中,你可以添加各種配置選項(xiàng)。例如,指定測試文件的命名規(guī)則:

    [pytest] python_files = test_*.py *_test.py check_*.py

    或者添加命令行選項(xiàng):

    [pytest] addopts = --cov=my_module --cov-report term-missing

    這個例子中,addopts添加了–cov選項(xiàng),用于生成代碼覆蓋率報告。my_module是你要測試的模塊名,term-missing表示在終端顯示缺失覆蓋的代碼行。

pytest.ini文件可以極大地簡化你的測試配置,提高測試效率。

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊10 分享