当我运行ANY测试时,会收到相同的消息。这是一个示例测试:
package require tcltest
namespace import -force ::tcltest::*
test foo-1.1 {save 1 in variable name foo} {} {
set foo 1
} {1}
我得到以下输出:
WARNING: unknown option -run: should be one of -asidefromdir, -constraints, -debug, -errfile, -file, -limitconstraints, -load, -loadfile, -match, -notfile, -outfile, -preservecore, -relateddir, -singleproc, -skip, -testdir, -tmpdir, or -verbose
我尝试了多种测试,但似乎没有任何效果。有谁知道如何使它工作?
更新#1:
上面的错误是我的错,这是因为它在我的脚本中运行。但是,如果我在命令行上运行以下命令,则不会得到任何输出:
[root@server1 ~]$ tcl
tcl>package require tcltest
2.3.3
tcl>namespace import -force ::tcltest::*
tcl>test foo-1.1 {save 1 in variable name foo} {expr 1+1} {2}
tcl>echo [test foo-1.1 {save 1 in variable name foo} {expr 1+1} {2}]
tcl>
如何获得通过或失败的输出?
最佳答案
您不会从test
命令本身获得任何输出(只要测试通过,如示例中所示:如果失败,该命令将显示“测试用例的内容” /“实际结果” /“预期结果” ”摘要;另请参见下面有关配置的说明)。测试统计信息将在内部保存:您可以使用cleanupTests
命令来打印总数/通过/跳过/失败的数字(该命令还会重置计数器并进行一些清理)。
(运行runAllTests
时,它将在子进程中运行测试文件,拦截每个文件cleanupTests
的输出,并将它们加起来总计。)
测试期间收集的内部统计信息可用于未记录的AFACT名称空间变量,例如::tcltest::numTests
。如果您想自己使用统计信息,则可以在调用cleanupTests
(例如,
parray ::tcltest::numTests
array set myTestData [array get ::tcltest::numTests]
set passed $::tcltest::numTests(Passed)
查看库中
tcltest
的源代码,以查看可用的变量。test
命令的输出量是可配置的,即使将p
/ pass
添加到-verbose
选项,即使测试通过也可以获得输出。此选项还可以使您在发生故障等情况下获得较少的输出。您还可以创建一个名为
::tcltest::ReportToMaster
的命令,如果存在,将由cleanupTests
调用,并将相关数据作为参数。这样做似乎抑制了统计信息的输出,并且至少抑制了大多数重置和清除工作。 (我对这种方法的研究还不算太深。)要知道,将其弄乱比解决问题更有可能造成麻烦,但是,如果您要基于tcltest
编写自己的测试软件,您可能仍想看它。哦,请对
test
命令使用较新的语法。它比较冗长,但是如果您开始使用它,稍后会感谢您。强制性但无用的(在这种情况下)文档链接:tcltest