2016-08-28 79 views
-4

我目前正在開發一個Python應用程序,我不斷地進行性能測試,只需通過記錄各個部分的運行時間。開發與發佈Python代碼

許多代碼僅與測試環境相關,並且不會存在於真實世界的應用程序中,我將這些代碼分離爲函數,並在測試時將這些調用註釋掉。這要求我記住哪些調用涉及到僅測試組件(它們是相當交錯的,所以我不能對功能進行分組)。

我想知道是否有更好的解決方案,迄今爲止唯一的想法是創建一個'模式'布爾值並插入If語句,儘管這感覺不必要的雜亂。我希望可能會有一些我更天真的標準化測試方法。

我是新來的python,所以我可能忽略了一些簡單的解決方案。 預先感謝您

+0

你能提供一些你想要隔離的部分通用代碼樣本嗎?我想到的一個選擇是將這些部分移動到單獨的函數中,並用一些自定義裝飾器來裝飾,例如'@ testing_environment_only'。但是在我看來,代碼的這些部分(如果它是測試代碼的話)與生產代碼一起駐留是沒有意義的 - 糟糕的體系結構。確保詳細闡述一點。 –

+0

所有測試代碼當前都駐留在單獨的函數中。 我應該說我是Python的新手,所以即使是簡單的建議,我也不知道使用裝飾器,所以我會研究這一點。 – user2071737

+1

處理它的正確方法是在單獨的軟件包中進行測試。如果需要,那些測試可以嘲笑你正在測試的其他代碼。如果您提供了一些代碼示例,您可能會獲得更有價值的反饋。 –

回答

0

有像標準庫的development-section那樣的庫進行測試。如果你還沒有使用這些工具,你應該開始這樣做 - 他們在測試中幫助很大。 (特別是unittest)。

通常的Python運行在調試模式下與__debug__集到True(見docs on assert)的程序 - 可以通過設置命令行關掉調試模式切換爲優化-O-OO(見docs)。

也有一些是在Python Wiki

0

使用專門的斷言,如果你正在調試&釋放模式之間切換時,註釋掉的代碼的幾個部分我會說,我認爲你做錯了。如您所見,以logging library爲例,使用該庫,只需更改單個參數即可指定要使用的日誌記錄級別。

儘量避免通過讓一個或多個控制模式(調試,發佈......)運行的變量來評論調試代碼的特定部分。你也可以使用一些builtin ones蟒蛇已經提供