You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用testthat检测R语言中除零操作的非默认处理?

用testthat检测R语言中的除零处理

你不需要硬匹配固定字符串,核心是验证除零时没有返回默认的Inf/NaN,而是返回了自定义内容。可以通过以下方式实现:

核心测试逻辑

只检查返回值的关键特征,而非具体文本:

  • 确保结果不是无穷值(Inf)或非数值(NaN)
  • 可选:如果要求必须返回提示文本,可额外检查结果为字符类型

修改后的测试代码

test_that("divide by zero returns non-Inf result", {
  result <- divide(2, 0)
  # 检测结果不是Inf
  expect_false(is.infinite(result))
  # 可选:如果要求必须返回字符串提示,添加此检查
  expect_type(result, "character")
})

代码说明

  • is.infinite(result) 判断结果是否为Inf,expect_false() 确保这个判断不成立,也就是结果不是Inf
  • 额外的expect_type() 可以确保用户返回的是字符串类型的提示,而非其他不符合预期的类型
  • 如果需要覆盖0/0产生的NaN情况,可再添加 expect_false(is.nan(result))

原测试失败原因

你的原测试硬编码了目标字符串 "Do not divide by 0",但用户实际返回的是 "Do not divide by zero",字符串内容不匹配导致测试失败。新测试逻辑不依赖具体文本内容,只要满足“非Inf”的核心要求就会通过。

内容的提问来源于stack exchange,提问作者KacZdr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 18:01:05