基本上-我正在做一个稍微不同的测试线具-我的要求很简单,但我只是不知道它是否可能在python?
我想做的就是做一个函数检查,如果我做了
check( "check the total matches", 123, a + call_something() * call_something_else() )
得到如下输出:
check the total matches failed...
expected: 123
evaluated: a + call_something() * call_something_else()
got: 122
即我的问题是关于构建&;评估&;字符串。在其他语言中,我查看了堆栈框架,找出了该函数的源代码,搜索了匹配的断言行并对其进行了解析——但它感觉可能在python中有一种更简单的方法——因为异常似乎包含了这些信息?
所以这是丑陋的,但它是为我工作:
def show_expression( expression ):
caller = [x.line for x in traceback.extract_stack(limit = 2)][0]
return re.findall( r"show_expression(s*(.*?)s*)s*$", caller)[0]
show_expression( 1 + 2 )