我有一個Python腳本tutorial.py。我想從我的python測試套件中的test_tutorial.py文件運行此腳本。如果tutorial.py沒有任何例外地執行,我想讓測試通過;如果在執行tutorial.py期間發生任何異常,我希望測試失敗。如果腳本失敗會引發異常
這裏是我如何寫test_tutorial.py,這確實不產生所需的行爲:
from os import system
test_passes = False
try:
system("python tutorial.py")
test_passes = True
except:
pass
assert test_passes
我發現上面的控制流是不正確:如果tutorial.py拋出一個異常,那麼斷言行從不執行。
測試外部腳本是否引發異常的正確方法是什麼?
聰明的解決方案,儘管行s = system(「python tutorial.py」)不執行:它只會引發一個不受控制的異常。所以我陷入了同樣的問題。 – aph
@aph,如果你試圖從另一個python文件中捕獲異常,你的try/except是多餘的。它不會被os.system引發,s = system(「python tutorial.py」)也執行代碼,我已經測試過它。 –
好的解決方案,Padriac!我之前沒有使用python生成子進程,所以這很有啓發性。感謝分享。 – aph