R 我如何捕获testthat';s错误消息作为数据帧中结果的一部分?

R 我如何捕获testthat';s错误消息作为数据帧中结果的一部分?,r,testthat,R,Testthat,我正在使用testthat包来运行测试,到目前为止,我对它非常满意。目前,我正在使用test_file()函数运行所有测试,并将其结果捕获为一个数据帧,然后进行一些额外的分析 然而,我想做的一件事是从数据帧本身的失败中捕获错误消息。我真的很喜欢其中一些信息的描述性,如果有更多的信息就好了。下面是我思考的一个例子。我想在df中将“平均绝对差:1”消息作为一列捕获 > df <- test_file(f) 1 1. Failure(@testthat.R#4): insert me h

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

然而,我想做的一件事是从数据帧本身的失败中捕获错误消息。我真的很喜欢其中一些信息的描述性,如果有更多的信息就好了。下面是我思考的一个例子。我想在
df
中将“平均绝对差:1”消息作为一列捕获

> 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
>测向
文件上下文测试nb失败错误用户系统real
1 testthat.R在此处插入我11 FALSE 0.004 0.004
消息正在生成,在一个Reporter类中截获这些消息似乎不需要太长的时间,但是在浏览了文档和源代码之后,我认为没有内置功能

那么,用当前版本的testthat可以做到这一点吗

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


谢谢你的意见

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

  • 您是否尝试过将此问题发布到hadley的github项目问题页面上。看,他显然想重构记者
  • 它可能是他们可以添加的报告器,也可能是他们可以将其作为一个新字段添加到他们数据库中的res数据帧中

  • 你试过其他记者了吗?我试过使用tap,它可以为显示屏提供更紧凑、更清晰的信息,这可能比默认设置更有帮助
  • 尝试使用我的代码(检查数据库中的代码名是否适合Apple share,我故意添加了一个拼写错误):

  • 然后,您是否可以捕获此R显示输出以帮助您,即使用类似于sink()的方法将输出发送到文件,然后搜索该文件以查找“not ok”(不正常)
    我意识到这并不完美,但在重构Reporter时,这可能是一个解决办法

    测试结果您好,谢谢您的回复。我本打算在github页面上摆出这个姿势,但首先想看看我是否遗漏了任何明显的东西。我确实调查了其他一些记者,但没有找到一个适合我需要的。我做了一些挖掘,发现List Reporter(生成df)确实捕获了失败消息,但在调用其get_summary方法时将其丢弃,因此理论上更改get_summary就足够了。这是好的,但仍然需要一些工作,使它做我想要的。谢谢你对sink()的建议,我会试试的。
    
    test_results <- test_file("test-something.R", reporter = "list")
    
    test_results <- test_file("test-something.R", reporter = "list")