gpt4 book ai didi

python - 在 python 中引发异常之前如何对回溯进行切片?

转载 作者:行者123 更新时间:2023-12-01 02:52:59 25 4
gpt4 key购买 nike

我编写了一个测试/模糊测试库,您可以简单地为其提供一个要测试的函数,然后该库将生成一个自动测试来查找破坏该函数的原因,以便您可以采取适当的步骤来使该函数高度可靠.

heres the link to battle_tested

事实证明,该项目取得了成功,对于实现我想做的事情非常有用。我遇到的问题是发现问题时回溯的大小。由于该库以完全机械化的方式创建测试,因此测试的函数将在我的库中增加 5 或 6 个级别。这导致 80% 的回溯只不过是在到达测试函数之前通过库进行的不同调用,以显示函数中的哪一行发生了错误。

heres a link to a small demo that demonstrates how large the traceback is

我的问题:有没有办法对回溯进行切片,以便在引发异常之前它只会显示我的库之外的步骤?我真的很努力让这个测试库用户友好,而广泛且不可读的回溯似乎是那些尝试使用它的人的痛点,他们还不知道该库到底在做什么。

感谢您提前提供的帮助。

最佳答案

您始终可以使用traceback.format_exc().splitlines()来创建列表:

#!/usr/bin/env python3
import traceback


def thing_that_will_blowup():
assert False is True


def catch_it_blowup():
try:
thing_that_will_blowup()
except AssertionError:
exception_data = traceback.format_exc().splitlines()
for index, line in enumerate(exception_data):
if 'File' in line and os.path.basename(__file__) in line:
print("{} - {}".format(index, line))
print("{} - {}".format(index + 1, exception_data[index + 1]))


if __name__ == "__main__":
catch_it_blowup()

返回:

1 -   File "split_stacktrace.py", line 11, in check_it_blowup
2 - thing_that_will_blowup()
3 - File "split_stacktrace.py", line 6, in thing_that_will_blowup
4 - assert False is True

您仍然需要从那里进行识别和切片。

关于python - 在 python 中引发异常之前如何对回溯进行切片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44522865/

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