关闭字幕 隐藏式字幕可在我们的YouTube频道
你可能会喜欢

[R提示:测试与testthat代码

InfoWorld的|二〇一八年五月三十○日

在这一事件做更多的与R,学习如何与自动化哈德利韦翰的testthat封装测试您的R里面的函数。

版权所有©2018Raybet2

嗨,这是莎朗·马克利斯,编辑数据和分析总监IDG通信。我在这里做第3集多与R:测试码对于testthat。
所以,uou've写一个函数。您运行几个不同的值的函数,你得到你想要的结果,你很高兴。
不过,你需要做出改变,所以需要在所有这些不同的值再次运行功能,以确保你没有破坏任何东西。拥有超过一个或两个测试值和代码更改,这很令人讨厌非常快。
这其中testthat包进来的,它的创造者,哈德利威克姆说testthat“试图使测试的乐趣成为可能,让你从编写测试得到内脏满意。”老实说,我不知道如果我能找到测试代码的乐趣。但是,testthat确实使相当痛苦 - 和很多优于一次性手动检查。
让我告诉你它是如何工作的。
我要创建一个简单的函数,它的发现在年 - 月 - 日格式的字符串输入“上个月的第一天”。
下面是函数的第一个版本:
我会加载功能,并尝试了几次。一切看起来不错!但是,您可能已经发现问题。如果我运行此:
你看到的功能不适用于工作月。
我需要再重新做功能和测试。但是,而不是手动运行所有这些测试,我将使用testthat。
这是一个testthat测试的格式。该test_underscore_that函数有两个参数。第一个参数是所述测试的说明。如果你在一个复杂的[R包跑了很多不同的测试是非常重要的。它跟一个逗号,因为它是第一个在功能,2个参数。
第二个参数是你的代码做什么它应该做的事情之间的实际比较。有很多的,除了expect_equal不同的测试选项。加载testthat包时有expect_true,expect_length,expect_less_than ...类型期待下划线,你会看到很多的选择。甚至还有写你自己的,定制的期望条件的方式。
在这个例子中,虽然,我只需要期待相等。
因此,让我们写的first_of_last_month功能的测试,看看会发生什么。
你看我在这里检查在六月和十二月日期。我期待6月5日的结果是5月1日和12月1日至11月1日。
我会运行。
似乎没有什么发生。这是你在测试中想要的东西:尼斯和安静。什么它真正做的是返回TRUE的值。
现在让我们添加一月的考验。
你可以看到第二个参数的第一线测试的期望first_of_last_month 2018年1月7日,将等于2017年12月1日,我们会运行测试
你可以看到测试失败:为1月7日第上个月不等于12月1日这也表明了问题。
顺便说一句,这是最不喜欢编码R.通常在R,如果有错误,代码停止运行。test_that仍然会运行所有的测试,一个失败,即使经过。我会添加其他月份的测试,所以你可以看到:
现在,我将尝试一种仅使用基础R功能的复杂的版本,避免任何软件包的依赖关系,并运行我的测试:
还有一个更简单的方法使用lubridate包,顺便做这个功能,但同时,让我查一下这个版本。我将源测试文件
所有安静。最后,这里是一个使用lubridate一个版本。
我会加载版本的功能和运行测试。
哦,还有一个问题。我的结果是一个日期,在目标值应该是一个字符串。因此,他们是不相等的。让我补充as.character的结果,然后再试一次。
这就行了。
而这一切,对于这个情节,对于观看的感谢!对于以上R提示,头向多与R视频网页在bit.ly/morewithR。这是HTTPS B I牛逼周期LŸ有R削减更多,全部小写除了R.那么长!
流行
从IDG.tv精选视频