rtest:r包的漂亮测试

1月7日,二千零一十九
通过

(本文首次发表于 塞巴斯蒂安·沃尔夫在媒体上的故事,并对 188bet appR博主

specFlow和cumber.io用于r。使非编码人员能够解释R包的测试报告,此外,允许非编码人员创建测试用例。向简单的R包验证迈出的一步。

按Startupstockphotos http://startupstockphotos.com/post/143841899156

目录

为什么要测试??

在R中测试似乎很简单。首先使用useThis::test_name(“名称“)然后,通过将测试编码到测试该 具有Expect_Equal之类的函数。你可以在网上找到很多教程,甚至有一整本关于“测试%20r%20code%20(chapman%20和%20hall/crc%20the%20r) 测试R代码“.悲哀地,这不是我能走的路。正如我提到的 几次,我在一个强大的 调节的环境。在这样的环境中,您的测试不仅由编码人员检查,但也会被无法编码的人攻击。您的一些测试甚至将由无法编码的人编写。类似的东西 反射流黄瓜会帮助他们编写这样的测试。但这些并不存在于R中。此外,这些人不能阅读命令行测试报告。你可以训练他们去做,但是我们决定为我们和他们提供一个良好的测试环境会更容易,打电话 雷特.

如果你想更多地了解开发这样一个环境的原因,金宝搏网址你可以阅读这篇文章:为什么我们需要对编程语言进行人类可读的测试?

_rtest有什么特别之处?金宝搏网址?

解释我们加入了哪些功能雷特 我将开始描述一个基本的测试工作流程。

1测试代码从编写代码开始。您的R包将包含函数,类和方法。这些应进行测试。

2编写测试现在主要包括以下调用:

My-函数(x,y){SuthSuffUp(x),(z)返回(z)}
x=3
Y=4
Z=7
stopinfo(我的函数(x,y)=z)

很容易看到,如果函数my_函数不能求和两个值,则测试将中断。您将创建一组这样的测试,并将它们存储在包的单独文件夹中,通常称为测试。

3之后,您可以运行所有此类测试。可以在“测试”文件夹中包含脚本或使用测试该和runtesttthat::test_dir()。

4如果其中一个测试失败,脚本将停止并告诉您控制台中哪个测试失败。这描述了下图所示的4个步骤。

现在关于rtest的特殊之处是两个主要金宝搏网址步骤。

  1. 测试的定义
  2. 这个报告测试执行的

对于测试的定义我们决定使用XML。为什么要使用XML?XML不仅比纯R代码更容易读取,它有一个功能,这就是所谓的XSD;“XML架构定义”.我们创建的每个XML测试用例都可以立即根据开发人员设计的模式进行检查。也可以根据我们自己的rtest.xsd进行检查。这意味着测试人员可以在执行创建的测试用例之前对它们进行双重检查。这节省了我们很多时间,并为所有测试用例提供了一个固定的结构。

这个报告在HTML中实现。这是由于HTML提供了许多用于报告的功能。它允许测试结果着色,链接到测试用例并包含图像。HTML报告的主要区别在于雷特测试该RTEST是否报告应执行的每项测试,不仅是那些失败的。测试报告还将包括函数调用创建的值和作为引用提供的值。读者可以看到比较是否真的正确。由此,测试报告包含的信息比测试该控制台日志。

使用rtest的测试实现示例

请注意,整个示例存储在吉图布要旨.如果你喜欢这个例子,请在要点上加上星号。

  1. 给定一个功能共有两列:
my_函数<-函数(data=data.frame(x=c(1,2)Y= C(1)2)){
stopinfot(dim(data)[2]=2)
数据[““和”]<-应用(数据,1,函数(x)和(x))
返回(数据)
}

2。我们想要一个成功的和一个不成功的测试。两者都有三个部分XML文件

       
        
         
        
       

参数说明输入参数

输出数据的引用.frame

测试规范:测试是否应静默运行以及公差是多少

对于成功的测试,我们的测试如下:

您可以立即看到rtest的一个特殊功能。它允许对多个测试使用数据集,我们将这些数据集存储在输入数据标记中,这样可以节省文件中的空间。这里将使用数据集test01。此外,可以为每个测试提供测试描述。对于存储在XML中的每个data.frame,列的类型可以用col defs给出。这些都是数字。

输入数据现在给出这里:

它是一个带有X只载1和Y柱子刚好支撑着2。测试应创建一个data.frame,每行的sum列为3。

通过更改引用标记,我们可以很容易地让测试失败,并且可以添加3.5来让测试失败,而不是在sum列中只包含3个。整个测试用例可以在90行的Github Gist.

三。这个执行测试用例只是一行代码。您的工作目录应该在带有XML文件的目录中,我的功能应该在全局环境中定义。

rtest.execute(getwd(),“rtest“中.xml”)

4。这个测试报告现在包含一个成功的和一个失败的测试。两者都将被可视化:

RTEST试验报告中的一般试验结果

所有测试的附加信息。对于失败的测试,我们将总和设置为3.5而不是3。据报道,在表的末尾:

_rtest中失败的数据帧比较示例

此外,报告还包含有关测试运行环境的信息:

RTEST测试报告的系统信息

就是这样。现在您可以使用rtest测试任何包。

进一步阅读


rtest:r包的漂亮测试最初发表于面向数据科学介质上,人们通过突出和回应这个故事来继续对话。

留下评论作者,请关注他们博客上的链接和评论: 塞巴斯蒂安·沃尔夫在媒体上的故事.

188bet appR博客提供 每日电子邮件更新金宝搏网址 R新闻与 教程关于以下主题: 数据科学,, 大数据,, r作业,可视化(可视化) GGPROTT2,, 箱形图,, 地图,, 动画)程序设计(程序) 演播室,, 斯威夫特,, 乳胶,, SQL,, 日食,, 吉特,, 哈多普,, 刮网)统计 回归,, 主成分分析,, 时间序列,, 交易还有更多…



如果你走这么远,为什么不 订阅更新 从站点?选择您的口味: 电子邮件,, 推特,, 1188bet app,或 脸谱网

注释已关闭。

搜索R-Blo188bet appggers


赞助商

千万不要错过更新!!
订阅R-Bloggers188bet app接收
最新R帖子的电子邮件。
(您将不再看到此消息。)

单击此处关闭(此弹出窗口将不再出现)