gpt4 book ai didi

perl - Perl 测试脚本能否检测它是否正在从一个 harness 中并行运行?

转载 作者:行者123 更新时间:2023-11-28 19:49:41 24 4
gpt4 key购买 nike

问题是:

Manipulating external state in a test file reduces the possible parallelism of your test suite.

我正在测试的是精确地操纵外部状态(然后重置它)。

大多数时候我仍然希望并行运行。然后我只想跳过会操纵外部状态的测试,这可能会使其他人失败。

所以我会通过检测并行条件来解决这个问题,然后跳过会操纵外部状态的测试,从而导致其他测试失败。那可行吗?怎么办?

请注意,仅从脚本中解析环境变量 HARNESS_OPTIONS 不足以检测条件:例如,prove -j3 不会设置它。

更新

虽然有很多方法可以让您的测试脚本知道它正在并行运行(请参阅下面 Brian 的回答),但没有一种标准的方式,我认为可能有(但没有在我的问题中正确地表达这一点)。

我在想类似的东西,嗯,好吧,我在你的(太棒了!)Effective Perl Programming 书中读到了它,brian,像维护者测试,不是现在确定这个术语,通常只有当你是模块的维护者时才会运行它,而不是在用户计算机上安装期间运行。似乎记得有一个使用一些环境变量的约定。

最佳答案

prove命令本身创建测试工具对象,因此它将参数直接传递给测试工具类的构造函数(通常为 TAP::Harness )。您看不到这些论点。

您可以通过多种方式前往此处:

  • prove 写一个包装器如果您使用 -j3,还可以设置环境变量.
  • 创建自己的 Test::Harness 的子类如果它得到 jobs 就做同样的事情参数并在您的配置中为 prove 指定子类.
  • 不要使用 prove (我最喜欢的)。
  • 使用测试程序中的信号量来注意另一个测试程序有控制权
  • 将外部交互部分移动到一个公共(public)库中,如果有人已经拥有控制权,该库可以告诉调用者
  • 许多其他事情

关于perl - Perl 测试脚本能否检测它是否正在从一个 harness 中并行运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9361166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com