perl – 如何规划外部子运行的其他测试?

前端之家收集整理的这篇文章主要介绍了perl – 如何规划外部子运行的其他测试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们在Perl中为不同的科学数据格式编写了解析器.最近我为每种格式和子格式添加了一个带有解析器_ * .t文件的测试套件.

当然,解析器的API完全相同,只是从用于测试解析的示例文件中读取的数据不同.为了简化测试文件,我写了一个sub,它传递了解析器对象和表示预期数据的哈希结构.看起来像

my $parser = new MyApp::Parser($file);
test_nested_objects = ($parser,{
     property1 => "value",property2 => 123,subobject_accessor => {
         property3 => "foobar",}
}

子test_nested_object遍历散列并运行对散列中定义的所有属性的测试,例如如果可以调用subobject_accessor,则返回一个对象,该对象可以被称为property3.

我检查了整个* .t文件运行了多少个测试并添加了tests => 123到所有* .t文件.现在,我在泛型函数添加了一些检查,所有计划都是错误的.

如何让我的计划了解子测试?我想实现以下目标:

>在运行它们之前给出的测试次数以查看progess
>总数自动增加→编辑子时无需手动更改数字
>运行时在sub中可见的单个测试(在sub中隐藏测试并返回0或1是不可接受的,因为我真的需要知道解析数据有什么问题)

我希望你能够明白.对不起,但我认为如果没有一些背景知识,人们可能会理解.

解决方法

测试计划的最新趋势根本就是不这样做.在测试文件的末尾,您声明已到达结尾:
done_testing();

测试计划的许多用途仅用于确保测试脚本完成.如果它看到了正确数量的测试,那么脚本必须一直到最后.这不是真的,但它是一个方便和可行的小说.

如果您必须进行一些计算来确定测试的数量,例如测量数据结构的大小,那么请执行此操作,然后再调用计划:

use Test::More;  # don't declare the plan yet

 my $test_count = ...;

 plan tests => $test_count;

但是,您可以将测试划分为子测试,而不是制定大计划.每个子测试只需知道它运行了多少测试,脚本只需要知道子测试的数量

subtest some_label => sub {
      plan tests => $n;
      ...
      };

您对测试函数的每次调用都将是一次测试,并且该函数将使用子测试来执行它想要执行的任何操作而不会向其调用者暴露太多.

原文链接:https://www.f2er.com/Perl/172236.html

猜你在找的Perl相关文章