r - 如何捕获 testthat 的错误消息作为数据帧中结果的一部分?

标签 r testthat

我正在使用 testthat 包来运行测试,到目前为止我对它非常满意。目前,我正在使用 test_file() 函数运行所有测试并将其结果捕获为数据帧,然后进行一些额外的分析。

但是,我想做的一件事是从数据帧本身的故障中捕获错误消息。我真的很喜欢某些消息的描述性,并且在下游提供额外的信息会很棒。下面是我在想什么的一个例子。我想将“平均绝对差:1”消息捕获为 df 中的一列.

> df <- test_file(f)
1

1. Failure(@testthat.R#4): insert me here --------------------------------------
1 not equal to expected
Mean absolute difference: 1

> df
        file context           test nb failed error  user system  real
1 testthat.R         insert me here  1      1 FALSE 0.004      0 0.004

消息正在生成,在其中一个 Reporter 类中拦截这些消息似乎并不太费力,但是在浏览文档和源代码之后,我认为该功能不是内置的。

那么,是否可以使用当前版本的 testthat 来做到这一点?

如果没有,启用此功能需要做什么?我愿意为该项目做出贡献,但我不确定从哪里开始,因为我不太习惯 R 的 OOP。

感谢您的输入。

最佳答案

扁 bean ,这也超出了我的技能水平。

  • 您是否尝试将此问题发布到 哈德利在他的 github 项目上 问题页面。见 Issue #215他明明是要重构Reporter?

  • 他们可以添加一个 Reporter,或者他们可以将其作为新字段添加到他们的 test_results.R 中的 res 数据帧中。 .
  • 你试过其他记者了吗? 我尝试了点击,它为显示提供了更紧凑和更清晰的信息,这可能比默认设置更有帮助。

  • 尝试使用我的代码(检查数据库中的代码名称对于 Apple 共享是否正确,并且我故意添加了拼写错误):
    > test_file("code/test-getdata-fun.R", reporter = "tap")
    1..3
    # Context Get Security Data Point 
    ok 1 Inputs ok 
    ok 2 Inputs ok 
    not ok 3 Get Security Name OK 
      GetDataPoint(conn, test.apple.ticker, "NAME")$NAME not equal to "APPLE INCssss"
    1 string mismatches:
    x[1]: "APPLE INCssss"
    y[1]: "APPLE INC"
    
  • 然后你可以捕获这个 R 显示输出来帮助你,即使用类似 的东西吗? sink() 将输出发送到文件 然后搜索那个寻找“不好”的?

  • 我意识到这并不完美,但这可能是重构 Reporter 时的一种解决方法。

    关于r - 如何捕获 testthat 的错误消息作为数据帧中结果的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732867/

    相关文章:

    R : Swapping 2 values in a nested list

    r - 来自 testthat 的函数 expect_that 遇到错误

    r - Ctrl + Shift + T 和 devtools::test() 的区别

    r - 用 NA 值计算卡方

    r - 帮我在 Amazon 的 EC2 上复制数据并运行脚本

    r - 如何使用dplyr的filter()和R-base的ifelse()过滤数据帧?

    r - ggplot2不知道如何处理 react 类的数据

    r - 测试软件QuickCheck有R接口(interface)吗?

    r - `expect_error` 里面的 `test_that` 不工作

    r - 如何在testthat框架中设置expect_equal的容差