问题标签 [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.
perl - perl *.t 的参数化 证明现有的测试
我有一堆 perl 测试:
- 功能测试
- 机械化测试
- 实际单元测试,断言函数和返回值等
- 涉及外部服务的测试,例如 WebServices
- 以数据库为中心的测试
- REST 测试
我通过证明运行所有这些,理论上将它们重新排列到各种目录中并运行类似的东西find t/ -name '*.t' ! -name '*timeout*' | xargs prove -l
,但是很难(而且不是很好的工程)以特定的方式命名测试,所以我们可以通过find
.
prove
当我们通过命令行运行它时,有没有办法可以将测试的通配符列表传递给它?
如果没有,是否有比我们目前使用的更理智的方法?
perl - 无法检测到“因子”的来源。为什么?
当我尝试和时,我得到以下回溯prove factorial
:
这是我的factorial.pm
:
我的factorial.t
:
我通过运行这个程序验证了我的factorial
模块工作正常(或者,至少,正确地做一件事)。
perl - 如何在调试器模式下运行 perl 测试?
我尝试在调试器下运行测试:
但这没有任何效果,因为每个测试都是作为单独的作业运行的。
我找到了--exec
选项,但是当我提供它时,我从.proverc
文件和命令行中丢失了任何选项
如何prove
使用附加选项运行测试,并且不会丢失.proverc
文件和命令行中提供的那些选项?
我不想重复自己并写道:
While-Ilib
和-Ilocal/lib/perl5
都在.proverc
文件中
python - 如何在无缓冲模式下运行 Perl 的“证明”TAP 工具?
作为在 Linux 上用 Python 3 [.4-.6] 编写的测试套件的一部分,我必须运行一些第 3 方测试。第 3 方测试是 bash 脚本。它们被设计为与Perl 的prove
TAP 工具一起运行。一个 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.t
时prove
,不会捕获任何输出,并且只打印空字符串。
这里发生了什么,我该如何解决?
即,我如何中断/终止与prove
(及其整个进程组)一起运行的 bash 测试脚本,以便我可以捕获其输出?
编辑:在答案中建议观察到的行为是由于 Perl 缓冲其输出而发生的。在单独的 Perl 脚本中,可以将其关闭。但是,没有明显的选项允许关闭prove
[-v] 的缓冲。我怎样才能做到这一点?
我可以通过直接运行我的测试作业来解决这个问题bash
。以下命令必须从
至
这样,我不会得到由 打印的测试统计信息prove
,但我可以自己生成它们。
perl - TAP::Harness::JUnit 不会将输出刷新到 STDOUT
我正在使用该
prove
实用程序运行测试脚本,并且
TAP::Harness::JUnit
.
与使用 perl 运行相比,输出正在缓冲并且不会立即刷新。
在机器本身上本地运行时,同样可以正常工作。是否有任何选项可用于证明或TAP::Harness::JUnit
刷新输出STDOUT
以及在 XML 文件中捕获
testing - Perl6:使用prove6时读取测试文件夹中的文件
编写测试时,文本文件在 test 文件夹中读取,但不在文件夹之外(即,在运行 Prove6 时)。例如,此代码读取测试文件夹内的 ReadConfig.ini,但不在其外部:
另一方面,此代码在 test 文件夹之外工作:
正确的语法是什么?
谢谢!
perl - 如何在 .proverc 中指定规则?
Perls 证明工具的联机帮助页说:
.proverc 中的选项的指定方式与命令行选项相同:
这不是真的,规则指定为
将在命令行上工作,但在文件中无法识别。.proverc
事实上,添加这一行将.proverc
禁用所有文件的并行测试。