我正在使用 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 ,这也超出了我的技能水平。
他们可以添加一个 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"
我意识到这并不完美,但这可能是重构 Reporter 时的一种解决方法。
关于r - 如何捕获 testthat 的错误消息作为数据帧中结果的一部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732867/