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で例外が発生した場合、assert行は実行されません。
外部スクリプトが例外を発生させるかどうかをテストする正しい方法は何ですか?
エラーがない場合は次のs
ようになります0
。
from os import system
s=system("python tutorial.py")
assert s == 0
またはサブプロセスを使用します:
from subprocess import PIPE,Popen
s = Popen(["python" ,"tutorial.py"],stderr=PIPE)
_,err = s.communicate() # err will be empty string if the program runs ok
assert not err
あなたのtry / exceptionはチュートリアルファイルから何もキャッチしていません、あなたはそれの外にすべてを動かすことができます、そしてそれは同じように振る舞います:
from os import system
test_passes = False
s = system("python tutorial.py")
test_passes = True
assert test_passes
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加