当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R assertCondition 断言错误条件


R语言 assertCondition 位于 tools 包(package)。

说明

测试代码时,仅检查结果是否正确是不够的,还要在适当的情况下发出错误或警告信号。此处说明的函数为此提供了便利的工具。这三个函数分别检查对提供的表达式进行求值是否会产生错误、警告或指定的条件列表之一。如果断言失败,则会发出错误信号。

用法

assertError(expr, classes = "error", verbose = FALSE)
assertWarning(expr, classes = "warning", verbose = FALSE)
assertCondition(expr, ..., .exprString = , verbose = FALSE)

参数

expr

未评估的R表达式将通过以下方式求值tryCatch(expr, ..).

classes, ...

character 对应于满足断言的条件类的字符串;例如,"error""warning" 。如果未指定任何条件,则任何条件都将满足断言。请参阅详细信息部分。

.exprString

要打印的字符串对应于 expr 。默认情况下,实际的expr将被解析。如果函数提供了要测试的实际表达式,则将被省略。如果从另一个函数调用 assertCondition(),并将实际表达式作为参数传递给该函数,则提供解析后的版本。

verbose

如果是 TRUE ,则在满足条件时打印一条消息。

细节

assertCondition() 使用通用条件机制来检查计算 expr 时生成的所有条件。无论可能发出什么其他条件,其中任何提供的条件类的出现都会满足断言。

assertError() 是一个用于断言错误的便捷函数;它调用assertCondition()

assertWarning() 断言将发出警告信号,但不会发出错误信号,而即使警告之后出现错误,assertCondition(expr, "warning") 也会得到满足。请参阅示例。

如果满足断言,则会以不可见的方式返回所有发出信号的条件对象的列表。有关这些对象的解释,请参阅conditionMessage。请注意,评估期间发出的所有条件都会返回,无论它们是否在要求范围内。

例子

  assertError(sqrt("abc"))
  assertWarning(matrix(1:8, 4,3))

  assertCondition( ""-1 ) # ok, any condition would satisfy this

try( assertCondition(sqrt(2), "warning") )
## .. Failed to get warning in evaluating sqrt(2)
     assertCondition(sqrt("abc"), "error")   # ok
try( assertCondition(sqrt("abc"), "warning") )# -> error: had no warning
     assertCondition(sqrt("abc"), "error")
  ## identical to assertError() call above

assertCondition(matrix(1:5, 2,3), "warning")
try( assertCondition(matrix(1:8, 4,3), "error") )
## .. Failed to get expected error ....

## either warning or worse:
assertCondition(matrix(1:8, 4,3), "error","warning") # OK
assertCondition(matrix(1:8, 4, 3), "warning") # OK

## when both are signalled:
ff <- function() { warning("my warning"); stop("my error") }
    assertCondition(ff(), "warning")
## but assertWarning does not allow an error to follow
try(assertWarning(ff()))
    assertCondition(ff(), "error")          # ok
assertCondition(ff(), "error", "warning") # ok (quietly, catching warning)

## assert that assertC..() does not assert [and use *one* argument only]
assertCondition( assertCondition(sqrt( 2   ), "warning") )
assertCondition( assertCondition(sqrt("abc"), "warning"), "error")
assertCondition( assertCondition(matrix(1:8, 4,3), "error"),
                "error")

作者

John Chambers and Martin Maechler

也可以看看

stopwarningsignalConditiontryCatch

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Asserting Error Conditions。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。