2011-06-18 595 views
88

我想開始爲我的Python代碼編寫單元測試,並且py.test框架聽起來比Python捆綁的unittest更好。所以我在我的項目中添加了一個「測試」目錄,並在其中添加了test_sample.py。現在我想配置PyCharm在我的「測試」目錄下運行所有​​的測試。如何配置PyCharm來運行py.test測試?

PyCharm據稱supports py.test在其試運行。你應該能夠create a run/debug configuration運行你的測試,PyCharm據說有"create configuration" dialog box specifically for py.test。但這是關於這個主題的完整文檔,我無法在任何地方找到這個涉嫌對話框。

如果我用鼠標右鍵單擊項目工具窗口的目錄,我supposed看到一個「創建<名>」菜單項,但首先是「創建」唯一的菜單項是「創建運行配置」。好吧,也許文檔是錯誤的,「創建運行配置」聽起來很有希望。不幸的是,它的子菜單中只有兩個項目是「Unittests in C:\ mypath ...」和「Doctest in C:\ mypath ...」,兩者都不適用 - 我既沒有使用unittest也沒有使用doctest。 py.test沒有菜單項。

如果我打開我的test_sample.py並在編輯器窗口中右鍵單擊,我確實得到了承諾的「創建<名稱>」菜單項:在Test_sa中創建'Unittests ...'...「,然後是「在test_sa中運行'Unittests ...'」和「在test_sa中調試'Unittests ...'」。再次,這些都是單元測試框架特有的。沒有任何py.test。

如果我嘗試使用「unittest」這個菜單項,我會得到一個對話框,其中包含「Name」,「Type」,「Tests」組合框以及「Pattern」和「Script 「和」類別「和」功能「等。這聽起來就像是添加configuration for Python Unit Test的對話框所記錄的那樣,而不像應該顯示的」名稱「和」測試運行「和」關鍵字「選項在configuration for py.test對話框中。對話框內沒有任何內容可以切換我添加的測試框架。

我在Windows 3.1上使用PyCharm 1.5.2和pytest 2.0.3。我可以在命令行的我的測試中成功運行py.test,所以它不像pytest那樣簡單,沒有正確安裝。

如何配置PyCharm來運行我的py.test測試?

回答

139

請到檔案|設置|工具| Python集成工具並將默認測試運行器更改爲py.test。然後你會得到py.test選項來創建測試,而不是單元測試。

+0

哈!不知道我是如何錯過的。但它只是一半工作:如果我右鍵單擊項目工具窗口中的文件夾,它給了我一個創建doctests的選項,而不是py.tests。 (我會寫一個錯誤報告。)但是,如果我在編輯器中右鍵單擊,然後將「Script:」更改爲目錄名稱,它就可以工作。 –

+0

謝謝!我永遠不會記得這個設置在哪裏! – Inti

+3

還記得將源代碼目錄標記爲「源代碼根目錄」:http://www.jetbrains.com/pycharm/webhelp/content-root.html – Inti

13

我想你需要使用工具欄上的Run/Debug Configuration項目。點擊它並點擊「Edit Configurations」(或者使用菜單項Run-> Edit Configurations)。在左窗格的'默認'部分有一個'py.test'項目,我認爲這是你想要的。

我還發現手冊沒有匹配到這個用戶界面。希望我已經正確理解了這個問題,這有所幫助。

+3

「Defaults> py.test」頁面實際上並沒有給我任何創建配置的方法。但是,如果我進入編輯配置對話框,點擊「+」工具欄按鈕,選擇「py.test」,並將「工作目錄」設置爲包含我的測試的目錄,這確實會創建一個配置來運行我的測試。所以+1將我指向程序的一個有用的部分。不過,我會將接受的答案提供給@yole,因爲我認爲將默認值更改爲py.test是一個更好的解決方案 - 它應該讓我只運行當前文件以及類似的東西。 –

+0

@JoeWhite請將它添加爲答案,因爲它是有幫助的 –

5

這是記錄不好,以確保。一旦從默認值添加新的配置,您將處於運行「/ Applications/PyCharm CE.app/Contents/helpers/pycharm/pytestrunner.py」腳本的領域。它沒有記錄,並有自己的命令行參數的想法。

您可以:

  1. 嘗試玩耍,扭轉腳本,看看你是否可以某種方式得到PY。測試接受參數。它可能工作;它沒有在我的前半個小時。
  2. 從控制檯運行「py.test * .py」。

奇怪的是,你會發現很難找到任何討論,因爲JetBrains在用自己的頁面轟炸Google算法方面做得很好。

0

使用特殊的Conda python安裝程序,它包含py.test的pip安裝以及Specs插件的使用(選項--spec)(對於Rspec,比如漂亮的測試彙總語言),我不得不這樣做;

1.Edit默認py.test以包括選項= --spec,這意味着使用的插件:https://github.com/pchomik/pytest-spec

2.創建新的測試配置,採用py.test。改變它的python解釋器使用〜/ anaconda/envs /你選擇的解釋器,例如py27作爲我的命名。

3.刪除'unittests'測試配置。

4.Now默認的測試配置,那麼py.test有我可愛的Rspec的風格輸出。我喜歡它!謝謝大家!

p.s. JetBrains公司的運行/調試CONFIGS文檔是在這裏:https://www.jetbrains.com/help/pycharm/2016.1/run-debug-configuration-py-test.html?search=py.test

1

發現這個線程時,我打了同樣的問題,找到了解決辦法 pycharm版本:2017年1月2日 去‘首選項’ - >‘工具’ - >「 Python中集成的工具」,並設置從右側面板py.test 默認的測試運行器解決我的問題

+0

它可以工作,但必須右鍵單擊項目窗口中的測試腳本文件名稱。如果您右鍵單擊相同測試腳本的文件編輯器區域,則不幸的是它仍會顯示舊的默認工具(Unittests)。這很煩人,因爲我不能指定我想測試的單個函數。 –

4

PyCharm 2017.3

  1. Preference -> Tools -> Python integrated Tools - 選擇py.testDefault test runner
  2. 如果你使用Django Preference -> Languages&Frameworks -> Django - 上Do not use Django Test runner
  3. 清除Run/Debug configuration所有先前拼命地跑測試設置的時間,否則測試將與配置中拼命地跑。
  4. 設置一些默認附加參數更新py.test默認配置。 Run/Debug Configuration -> Defaults -> Python tests -> py.test -> Additional Arguments
+2

在PyCharm 2017.3.2中,即使我將py.test設置爲默認值,當我在Projects面板中右鍵單擊該項目並選擇New => Python File時,Kind:下拉列表僅提供:Python文件,單元測試,Python存根,而不是Pytest。我查看了上述線程中提到的所有位置。我錯過了什麼? –

+0

Python文件,單元測試,Python存根 - 它們是python文件,帶有一些預定義的數據,可以添加自己的,閱讀本主題https://www.jetbrains.com/help/pycharm/creating-and-editing-file -templates.html。但是這並不影響運行py.test測試,你可以創建一個python文件,它會起作用。在這個話題中,我們正在討論如何配置這個功能https://www.jetbrains.com/help/pycharm/running-tests.html來運行py.test。 –

相關問題