关于tcltest的返回结果

来源:互联网 发布:日本老龄化 知乎 编辑:程序博客网 时间:2024/05/18 03:06
开源的tcltest 给我们提供了一个很好的自动化测试框架。 这对进行自动化测试的人来说不能不说是一个福音,在这个框架下我们可以做出很多适合我们自己的测试用例。 下面就解释一下body部分的返回值在整个test处理中的重要作用。 先看下面的一段脚本 package require tcltest #tcltest init ,初始化一些值,这个是很必要的 tcltest::init namespace eval ::aaa::bbb {             namespace import ::tcltest::*  test Start { Test this function } -constraints { } -setup {        puts "setup part" } -body  {            puts "body part" #        set result 1 #    return $result     return 1 } -cleanup { } -result "1" } 这是一段很简单的测试脚本。 test 函数用body中return的值和最后的result中的值进行对比来判断这个test是否通过。 在这里,我们设定result 为0,然后将这个值return运行结果: D:/>tclsh test.tcl setup part body part ==== Start Test this function FAILED ==== Contents of test case:         puts "body part"         set result 0         return $result ==== Log Records : ---- Result was: 0 ---- Result should have been (exact matching): 1 ==== Start FAILED 我们可以看到,两个值不匹配,这样整个test就会认为失败。显示为:Start FAILED 我们进行如下两次试验 1.没有return值 。我们将上面脚本中的return语句注释掉,再执行一下,结果如下: D:/>tclsh test.tcl setup part body part ==== Start Test this function FAILED ==== Contents of test case:         puts "body part"         set result 0         #return $result ==== Log Records : ---- Result was: 0 ---- Result should have been (exact matching): 1 ==== Start FAILED 我们可以看到,将return注释掉之后,依然返回failed. 2.我们将result 设置为1.执行如下: D:/>tclsh test.tcl D:/>tclsh test.tcl ---- Start start "Test this function" setup part body part ++++ Start PASSED 这个case居然显示通过了。 3.如果直接return 1的结果会怎么样?运行结果如下: D:/>tclsh test.tcl ---- Start start "Test this function" setup part body part ++++ Start PASSED 结果显示这个case也是通过了。 总结: 从上面的试验我们可以看出,tcltest中的test函数可以做到在body中返回的值和我们期望的值进行比较来生成测试结果的功能,使用十分灵活。在有return语句的情况下,test函数将会用return的值和result的值进行比较来判断是否通过。如果没有提供return语句,那么他就会body部分最后一个操作返回值作为body的返回值,用此值与result的期望值进行比较来判断结果。 这固然是一种很灵活的用法,但是很容易造成阅读者和维护人员的混淆,我们在脚本开发中不提倡这种返回方法,还是“老老实实”用return语句结束的好。
原创粉丝点击