2017-08-12 41 views
0

我想在單元測試中用命令行參數測試一個python二進制文件「main.py」。這個二進制文件的用法如下。如何在python單元測試中測試python二進制文件?

main.py --input_file=input.txt --output_file=out.txt 

在設計單元測試時,我認爲最好是測試每個組件,比如一個類或一個方法。

但是,在上面的一些情況下,我想對整個python二進制文件進行端到端測試,尤其是在其他人已經創建的時候。在上述情況下,我想確認「main.py」是否正確生成「out.txt」。

一個選項是使用subprocess.check_call並將其創建到臨時目錄,並加載它並將其與黃金(預期輸出)進行比較。

這是一個好方法嗎?

或者,如果有什麼更好的方法,請你給我建議?

+0

作爲一個方面說明:一'.py'文件是不是一個「二進制」。 C'python'解釋器是一個。並且不要混合單元測試和端到端測試。保持他們分開。 –

回答

1

這被稱爲blackbox testing,因爲程序的內部結構對於測試者是未知的。如果您堅持測試模塊而不知道里面發生了什麼,您可以(如您所述)使用execsubprocess來檢查輸出的有效性。但更合理的方法是使用unittest庫並嘗試使用它提供的API來測試代碼。

1

如果您正在測試參數處理作爲單元測試的一部分,只需查看main.py並查看它如何處理參數。

例如,您可能有設置sys.argv一個測試用例,然後調用主: