如何测试我的程序对于意外关闭的鲁棒性?
我的 python 代码将在意外关闭的微控制器上运行。我想测试意外重新启动的代码的每个部分,并验证它是否正确处理此问题。
尝试:我尝试将代码放入其自己的进程中,然后提前终止它,但这不起作用,因为 MyClass 从命令行调用 7zip,即使进程终止后,该命令仍会继续:
import multiprocessing
import os
def MyClass(multiprocessing.Process):
...
def run():
os.system("7z a myfile.7z myfile")
process = MyClass()
process.start()
time.sleep(4)
print("terminating early")
process.terminate()
print("done")
Run Code Online (Sandbox Code Playgroud)
我想要的是:
class TestMyClass(unittest.TestCase):
def test_MyClass_continuity(self):
myclass = MyClass().start()
myclass.kill_everything()
myclass = MyClass().start()
self.assert_everything_worked_as_expected()
Run Code Online (Sandbox Code Playgroud)
是否有捷径可寻?如果没有,您如何设计可以在任何点终止的健壮代码(例如测试状态机)?
类似的问题(截至 21 年 10 月 26 日尚未回答):Simizing异常终止 in pytest
多谢!
python error-handling microcontroller multiprocessing pytest