tcltest将变量从-setup脚本传递给-body脚本

时间:2016-09-14 10:25:55

标签: unit-testing tcl

我正在使用tcltest为我的TCL过程编写一些简单的单元测试 我想知道是否有办法在-body脚本中可见的-setup脚本中创建变量?也许以某种方式使用upvar / uplevel?
到目前为止,我已经尝试过产生错误的天真方法("测试文件错误:无法读取" N":没有这样的变量"):

tcltest::test equal4_test {
} -setup {
    set N 4
} -body {
    equal4 $N
} -result 1

1 个答案:

答案 0 :(得分:1)

tcltest -setup-body脚本中的变量在同一个上下文中进行计算,这与调用tcltest::test的上下文完全相同。任何已定义的-cleanup脚本也会在该上下文中进行评估。在内部,Tcl的uplevel命令用于强制执行此操作,而Tcl自己的测试套件的批次依赖于此,因此我们非常确定它的工作原理。

还有其他事情正在发生。您是否在命名空间中运行此代码?如果是,您可能想要创建变量:

variable N 4

而不是:

set N 4

避免对Tcl(这方面的奥术)可变分辨率规则的可怕错误。