tcltest 单元测试:如何检查约束是否处于活动状态以启用代码重用
tcltest unit tests: how to check if constraint is active to enable code reuse
我们正在使用 tcltest 进行单元测试,但我们发现很难在我们的测试套件中重用代码。
我们有一个针对不同系统配置多次执行的测试。我创建了一个包含此测试的过程,并在各处重复使用它,而不是在整个套件中多次复制测试代码。
例如:
proc test_config { config_name} {
test $test_name {} -constraints $config_name -body {
<test body>
} -returnCodes ok
}
问题是我有时只想测试某些配置。如上所示,我将配置名称作为参数传递给 proc,但是测试的 -constraints {} 部分没有按预期查找 $config_name 参数。除非我对配置名称进行硬编码,否则测试总是被跳过,但是使用 proc 是不可能的,我需要在任何地方复制代码只是为了对约束进行硬编码。
有没有办法查看是否在 tcltest 配置中启用了约束?
像这样:
proc test_config { config_name} {
testConstraint X [expr { ::tcltest::isConstraintActive $config_name } ]
test $test_name {} -constraints X -body {
<test body>
} -returnCodes ok
}
那么,tcltest 中是否有一个函数在做类似 ::tcltest::isConstraintActive $config_name?
Is there a way to look if the constraint is enabled in the tcltest configuration?
是的。如果您不传入参数来设置约束的状态,testConstraint
命令将执行此操作:
if {[tcltest::testConstraint foo]} {
# ...
}
但是不要使用它来决定是运行测试还是进行单次测试设置或清理。测试应该始终只通过约束直接打开或关闭,以便生成的报告 tcltest 可以正确跟踪哪些测试被禁用以及出于什么原因,并且每个测试都有允许脚本的 -setup
和 -cleanup
选项要运行测试前后如果约束匹配.
就我个人而言,我不建议将测试放在过程中或使用变量作为测试名称。它可以正常工作,但是当您试图弄清楚什么测试失败以及为什么失败时,它会让人感到困惑;不添加调试就已经很困难了。 (我还发现 apply
是 很棒的 作为一种在测试中获得类似过程的东西而不会失去“在那里检查代码”的方法 属性.)
我们正在使用 tcltest 进行单元测试,但我们发现很难在我们的测试套件中重用代码。
我们有一个针对不同系统配置多次执行的测试。我创建了一个包含此测试的过程,并在各处重复使用它,而不是在整个套件中多次复制测试代码。
例如:
proc test_config { config_name} {
test $test_name {} -constraints $config_name -body {
<test body>
} -returnCodes ok
}
问题是我有时只想测试某些配置。如上所示,我将配置名称作为参数传递给 proc,但是测试的 -constraints {} 部分没有按预期查找 $config_name 参数。除非我对配置名称进行硬编码,否则测试总是被跳过,但是使用 proc 是不可能的,我需要在任何地方复制代码只是为了对约束进行硬编码。
有没有办法查看是否在 tcltest 配置中启用了约束?
像这样:
proc test_config { config_name} {
testConstraint X [expr { ::tcltest::isConstraintActive $config_name } ]
test $test_name {} -constraints X -body {
<test body>
} -returnCodes ok
}
那么,tcltest 中是否有一个函数在做类似 ::tcltest::isConstraintActive $config_name?
Is there a way to look if the constraint is enabled in the tcltest configuration?
是的。如果您不传入参数来设置约束的状态,testConstraint
命令将执行此操作:
if {[tcltest::testConstraint foo]} {
# ...
}
但是不要使用它来决定是运行测试还是进行单次测试设置或清理。测试应该始终只通过约束直接打开或关闭,以便生成的报告 tcltest 可以正确跟踪哪些测试被禁用以及出于什么原因,并且每个测试都有允许脚本的 -setup
和 -cleanup
选项要运行测试前后如果约束匹配.
就我个人而言,我不建议将测试放在过程中或使用变量作为测试名称。它可以正常工作,但是当您试图弄清楚什么测试失败以及为什么失败时,它会让人感到困惑;不添加调试就已经很困难了。 (我还发现 apply
是 很棒的 作为一种在测试中获得类似过程的东西而不会失去“在那里检查代码”的方法 属性.)