gpt4 book ai didi

python - 带有子进程的 PyUnit

转载 作者:太空宇宙 更新时间:2023-11-04 06:29:13 25 4
gpt4 key购买 nike

在一些 Python 代码中,我 fork 并在父进程等待它退出时在子进程中进行一些处理。它不会在 fork 之后 exec

我在 PyUnit 中测试此代码时遇到问题,因为当子进程使用 sys.exit 显式退出时,它会产生 PyUnit 错误。

下面这段代码产生了问题

class TestClass(TestCase):
def test(self):
pid = os.fork()
if pid == 0:
sys.exit(0)
else:
os.waitpid(pid,0)

这是错误

Traceback (most recent call last):
File "test.py", line 15, in test
sys.exit(0)
SystemExit: 0
----------------------------------------------------------------------
Ran 1 test in 0.007s

FAILED (errors=1)

如果子进程显式退出,是否有一些方法可以避免 PyUnit 测试失败?

最佳答案

sys.exit 所做的只是抛出一个 SystemExit 异常,它会像往常一样冒泡。然而 os._exit(0) 将立即退出并且不给任何清理代码运行的机会。这会阻止 PyUnit 执行任何操作,包括使测试失败。因此,在您的测试代码中,您可以捕获 SystemExit 并改为调用 os._exit。

如果子进程希望在退出时进行一些明确的清理,您必须在测试用例中安排这样做。

关于python - 带有子进程的 PyUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4879859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com