小编ben*_*sop的帖子

如何使用pytest模拟完全重启

如何测试我的程序对于意外关闭的鲁棒性?

我的 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

6
推荐指数
1
解决办法
481
查看次数