我正在为自动程序编写脚本。该测试通过Paramiko使用SSH连接,无论出于何种原因(系统相关),系统重新启动并关闭SSH连接。然后Python抛出一个错误,说连接被强行关闭。
我希望程序在except语句中捕获错误,然后将恢复ssh连接,然后从第一次出现错误的地方继续。
代码太长而无法发布,但基本上我希望执行以下操作:
try:
dotesting()
except ParamikoError():
restoressh()
#here i want to break out and get back into dotesting()
我不确定这是可能的,因为“goto”不赞成并且在Python中不可用。我将如何执行此操作?
修改
所以我原本想做的事情是不可能的。现在我将焦点转移到重新启动dotesting()
def dotesting():
try:
stepone()
except ParamikoError():
#Need to restart step here, want to flow into steptwo() below
try:
steptwo()
except ParamikoError():
#Need to restart step here, want to flow into the return statement below
return("Success")
答案 0 :(得分:0)
一个非常糟糕的答案是编写程序,然后将其保存为字符串列表,其中列表中的每个项目都是程序的一行。然后执行以下操作:
i =0
while i<len(program)
try:
eval(program[i])
i+=1
except ParamikoError():
pass
就像我说的那样,非常糟糕的解决方案,但我无法想到更好的事情。
答案 1 :(得分:0)
如果每次都要模拟ssh接口时都不抛出异常。否则,您可以这样做:
def stepone():
raise AttributeError
def steptwo():
return 1
class TestStuff(unittest.TestCase):
def test_steps(self):
with self.assertRaises(AttributeError):
stepone()
self.assertEquals(steptwo(), 1)
if __name__ == '__main__':
unittest.main()