我正在使用tcltest
为我的TCL过程编写一些简单的单元测试
我想知道是否有办法在-body脚本中可见的-setup脚本中创建变量?也许以某种方式使用upvar / uplevel?
到目前为止,我已经尝试过产生错误的天真方法("测试文件错误:无法读取" N":没有这样的变量"):
tcltest::test equal4_test {
} -setup {
set N 4
} -body {
equal4 $N
} -result 1
答案 0 :(得分:1)
tcltest -setup
和-body
脚本中的变量在同一个上下文中进行计算,这与调用tcltest::test
的上下文完全相同。任何已定义的-cleanup
脚本也会在该上下文中进行评估。在内部,Tcl的uplevel
命令用于强制执行此操作,而Tcl自己的测试套件的批次依赖于此,因此我们非常确定它的工作原理。
还有其他事情正在发生。您是否在命名空间中运行此代码?如果是,您可能想要创建变量:
variable N 4
而不是:
set N 4
避免对Tcl(这方面的奥术)可变分辨率规则的可怕错误。