我正在使用testthat包来运行测试,到目前为止我对它非常满意。目前,我正在使用test_file()函数来运行所有测试并将其结果捕获为数据帧,然后进行一些额外的分析。
但是,我想要做的一件事是从数据帧本身的故障中捕获错误消息。我真的很喜欢一些消息的描述性,并且额外的信息对于下游来说会很棒。以下是我正在考虑的一个例子。我想将{mean absolute difference: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类中拦截这些消息看起来似乎不是太过分,但是在浏览了文档和源代码之后,我不认为该功能是内置的。
那么,是否可以使用当前版本的test来做到这一点?
如果没有,启用此功能需要做什么?我愿意为这个项目做出贡献,但我不知道从哪里开始,因为我不习惯R的OOP。
感谢您的投入。
答案 0 :(得分:1)
他们可以添加一个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"
我意识到这并不完美,但它可能是一个解决方法,而记者正在被重构。
答案 1 :(得分:0)
test_results <- test_file("test-something.R", reporter = "list")
结果是某种testthat
对象,但您可以将其设置为数据框并对其执行操作。
test_results&lt; - as.data.frame(test_results)
我总是按测试持续时间排序,例如。