2017-07-25 100 views
0

好的,所以我正在做單元測試章節的Python Crash Course exercies,我無法完全使用PyCharm來使用它。PyCharm中的單元測試

我的 「項目」 的字面由兩個簡單文件:

city_functions.py:

def city_country(city, country): 
    result = '{0}, {1}'.format(city.title(), country.title()) 
    return result 

test_cities.py:

import unittest 
from city_functions import city_country 


class CityTestCase(unittest.TestCase): 
    """Tests for 'city_functions.city_country' function.""" 

    def test_city_country(self): 
     result = city_country('london', 'england') 
     self.assertEqual(result, 'London, England') 

unittest.main() 

現在,當我試圖運行來自PyCharm的模塊我得到:

(...) 
---------------------------------------------------------------------- 
Ran 0 tests in 0.000s 

OK 

但它的作品,當我從命令行運行它:

> python -m test_cities 
. 
---------------------------------------------------------------------- 
Ran 1 test in 0.000s 

OK 

是否有與PyCharm配置任何詭計來得到它的工作?我已經閱讀了一些關於命名約定的文章(測試函數和整個模塊必須以'test'開始,但它已經在我的情況下)。

+0

是的,肯定是有一些設置你需要做的嘗試運行單元測試時。很難一步一步地給出指示。請仔細閱讀[help](https://www.jetbrains.com/help/pycharm/run-debug-configuration-unittests.html),然後查看配置菜單以查看可用的選項。看看你在哪裏運行你的'python -m test_cities'命令來理解正在使用的相對路徑。 – idjaw

+0

最終,在您的配置中,您需要確定「工作」目錄是哪個應用程序的主執行位置,哪個是您的導入位置的參考。 – idjaw

回答

1

實際上增加主要檢查解決了這個問題(從PyCharm和命令行工作):

(...) 
if __name__ == '__main__': 
    unittest.main() 
+0

@Jedi我不明白爲什麼PyCharm需要主要檢查,雖然 –

+0

如果我理解正確-m參數確保模塊將作爲__main__模塊運行。所以從終端我可以運行這個模塊像「python test_cities.py」,它工作得很好。爲了PyCharm「點擊」我需要刪除「unittest.main()」行,但然後終端停止工作。這就是爲什麼我添加了主要檢查 - 我不知道爲什麼這條線影響PyCharm的行爲。 –