perl - 如何自动运行大量 perl 脚本?

标签 perl testing automated-tests system-testing

我需要在 Windows 上运行 100 多个 perl 脚本(由前员工编写)以进行系统稳定性测试。每个脚本都有几个函数,每个函数向我们的后端系统发送特定的 linux 命令,并取回结果。结果被写入一个日志文件(目前每个脚本都有一个日志文件)。结果是“成功”,“失败”。

一个接一个地运行这些 perl 脚本简直是在浪费我的时间。我正在考虑编写一个批处理文件来自动化它,但我必须解析结果文件以生成测试报告。网上搜了一下,好像有好几个测试框架,比如Test::Harness , Test::More , Test::Most是不错的选择。虽然根据我的理解,他们只接受 .t 文件,而我们的脚本是普通的 perl 脚本(.pl),而不是标准的 perl 测试脚本(.t 脚本)。例如,如果使用 Test::Harness,我是否应该将所有 perl 脚本从 .pl 更改为 .t,并将它们放在 t 文件夹下?如何在 Test::Harness 中调用我的函数?有人可以建议一种更好的方法来自动化测试过程并生成像 Test::Harness 那样的测试报告吗?我认为一个例子会很有帮助。

最佳答案

Test::Harness and friends 并不是这个任务的合适选择,除非您想修改所有 100 个脚本以发出 TAP 数据而不是日志文件。

为什么不写一个 Perl 脚本来运行所有的 Perl 脚本呢?

use strict;
use warnings;

my $script_dir = "/path/to/dir/full/of/scripts";
opendir my $dh, $script_dir or die "Can't open dir $script_dir: $!";

my @scripts = grep { /\.pl$/ } readdir $dh;
foreach my $script( @scripts ) { 
    print "Running $script\n";
    system 'perl', $script;
}

您甚至可以使用 forkexec(或 Parallel::ForkManager,甚至更好)对其进行并行处理,前提是这对您的系统有意义。

关于perl - 如何自动运行大量 perl 脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16615642/

相关文章:

.NET 2.0 代码 - 使用 MoQ 进行单元测试

Python Nosetest 多处理在类/包级别启用和禁用

php - 在 PHP 中为多变量测试创建配方?

unit-testing - 如何模拟 http.Client Do 方法

c# - NUnit 并行运行测试类别

c# - 在带有 Html Table 的网页上,如何使用 C# 确定是否选择了 Html Row?

perl - 大括号在访问对象时有什么区别

perl - List::Util - 减少 - 长度 - 编码 - 问题

perl - pdl2(或Devel::REPL)中是否有等效于perl调试器 'x'的东西?

perl - 我可以在一台计算机上同时使用 Strawberry Perl 和 ActiveState Perl 吗?