其他分享
首页 > 其他分享> > 脚本失败时引发异常

脚本失败时引发异常

作者:互联网

我有一个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为0:

from os import system
s=system("python tutorial.py")
assert  s == 0

或使用subprocess

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 / except没有从教程文件中捕获任何内容,您可以将所有内容移到该文件之外,并且其行为相同:

from os import system
test_passes = False

s = system("python tutorial.py")
test_passes = True

assert test_passes

标签:control-flow,exception-handling,automated-tests,python
来源: https://codeday.me/bug/20191028/1955067.html