问题标签 [perl-prove]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
234 浏览

perl - perl *.t 的参数化 证明现有的测试

我有一堆 perl 测试:

  1. 功能测试
  2. 机械化测试
  3. 实际单元测试,断言函数和返回值等
  4. 涉及外部服务的测试,例如 WebServices
  5. 以数据库为中心的测试
  6. REST 测试

我通过证明运行所有这些,理论上将它们重新排列到各种目录中并运行类似的东西find t/ -name '*.t' ! -name '*timeout*' | xargs prove -l,但是很难(而且不是很好的工程)以特定的方式命名测试,所以我们可以通过find.

prove当我们通过命令行运行它时,有没有办法可以将测试的通配符列表传递给它?
如果没有,是否有比我们目前使用的更理智的方法?

0 投票
1 回答
1045 浏览

perl - 无法检测到“因子”的来源。为什么?

当我尝试和时,我得到以下回溯prove factorial

这是我的factorial.pm

我的factorial.t

我通过运行这个程序验证了我的factorial模块工作正常(或者,至少,正确地做一件事)。

0 投票
1 回答
912 浏览

perl - 如何在调试器模式下运行 perl 测试?

我尝试在调试器下运行测试:

但这没有任何效果,因为每个测试都是作为单独的作业运行的。

我找到了--exec选项,但是当我提供它时,我从.proverc文件和命令行中丢失了任何选项

如何prove使用附加选项运行测试,并且不会丢失.proverc文件和命令行中提供的那些选项?

我不想重复自己并写道:

While-Ilib-Ilocal/lib/perl5都在.proverc文件中

0 投票
2 回答
479 浏览

python - 如何在无缓冲模式下运行 Perl 的“证明”TAP 工具?

作为在 Linux 上用 Python 3 [.4-.6] 编写的测试套件的一部分,我必须运行一些第 3 方测试。第 3 方测试是 bash 脚本。它们被设计为与Perl 的proveTAP 工具一起运行。一个 bash 脚本最多可以包含数千个单独的测试——其中一些可以无限期挂起。超时后,我想杀死测试脚本并收集一些关于它卡在哪里的信息。

因为 bash 脚本会创建自己的进程,所以我尝试将整个prove进程树隔离到一个新的进程组中,因此如果出现问题,我最终可以将整个进程组作为一个整体杀死。因为测试必须以 root 权限运行,所以我sudo -b用于创建一个具有 root 权限的新进程组。这种策略(而不setsid是以一种或另一种方式使用)是我在 SE Unix&Linux 上收到的关于这个问题的评论的结果

问题是,prove如果我在sudo -b通过 Python 的subprocess.Popen.

我把它隔离成一个简单的测试用例。以下是一个名为 的 bash 测试脚本job.t

只是为了比较,我还编写了一个 Python 脚本,名为job.py产生或多或少相同的输出并表现出相同的行为:

最后但同样重要的是,以下是我的精简版“Python 测试基础设施”,名为demo.py

启动时demo.py,它会运行run_demo两次例程 - 使用不同的配置。这两次,都会启动一个具有 root 权限的新进程组。两次,“测试作业”ok [line number]每秒打印一次新行 ( ) - 理论上为 20 秒 / 20 行。但是,两个脚本都有 5 秒的超时时间,并且整个进程组在此超时时间后被终止。

run_demo第一次使用我的小 Python 脚本运行时,该脚本job.py的所有输出一直到它被杀死时都被捕获并成功打印。当run_demo第二次在 上运行演示 bash 测试脚本job.tprove,不会捕获任何输出,并且只打印空字符串。

这里发生了什么,我该如何解决?

即,我如何中断/终止与prove(及其整个进程组)一起运行的 bash 测试脚本,以便我可以捕获其输出?

编辑:在答案中建议观察到的行为是由于 Perl 缓冲其输出而发生的。在单独的 Perl 脚本中,可以将其关闭。但是,没有明显的选项允许关闭prove[-v] 的缓冲。我怎样才能做到这一点?


我可以通过直接运行我的测试作业来解决这个问题bash。以下命令必须从

这样,我不会得到由 打印的测试统计信息prove,但我可以自己生成它们。

0 投票
0 回答
114 浏览

perl - TAP::Harness::JUnit 不会将输出刷新到 STDOUT

我正在使用该 prove实用程序运行测试脚本,并且 TAP::Harness::JUnit.

与使用 perl 运行相比,输出正在缓冲并且不会立即刷新。

在机器本身上本地运行时,同样可以正常工作。是否有任何选项可用于证明或TAP::Harness::JUnit刷新输出STDOUT以及在 XML 文件中捕获

0 投票
1 回答
109 浏览

testing - Perl6:使用prove6时读取测试文件夹中的文件

编写测试时,文本文件在 test 文件夹中读取,但不在文件夹之外(即,在运行 Prove6 时)。例如,此代码读取测试文件夹内的 ReadConfig.ini,但不在其外部:

另一方面,此代码在 test 文件夹之外工作:

正确的语法是什么?

谢谢!

0 投票
1 回答
113 浏览

perl - 如何在 .proverc 中指定规则?

Perls 证明工具的联机帮助页说:

.proverc 中的选项的指定方式与命令行选项相同:

这不是真的,规则指定为

将在命令行上工作,但在文件中无法识别。.proverc事实上,添加这一行将.proverc禁用所有文件的并行测试。