使用 Ruby 测试单元在一个脚本中并行运行多个测试

2024-04-08

我在一个 ruby​​ 脚本中有 4 个测试,我使用命令运行

ruby test.rb

输出看起来像

Loaded suite test
Started
....

Finished in 50.326546 seconds.

4 tests, 5 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
100% passed

我想要实现的是,并行运行所有 4 个测试,而不是顺序运行。 比如 4 个线程,每个线程运行一个测试,有效地将执行时间减少到 4 个测试中最慢的一个 + 并行执行的时间很少。

我碰到this https://github.com/grosser/parallel_tests,但这似乎并行运行多个 ruby​​ 测试文件 - 假设我有 test1.rb、test2.rb test3.rb,那么所有三个文件都会并行运行。

任何帮助将不胜感激。


我尝试了以下组合TestSuite and Thread:

gem 'test-unit'
require 'test/unit'
require 'test/unit/ui/console/testrunner'
# we're running the tests, so we don't want Test::Unit to automatically run everything for us.  See http://www.natontesting.com/2009/07/21/stop-rubys-testunit-suite-files-running-all-your-tests/
Test::Unit.run = true


class MyTest < Test::Unit::TestCase
  def test_1()
    assert_equal( 2, 1+1)
  end
  def test_2()  
    assert_equal( 2, 4/2)
  end
  def test_3()      
    assert_equal( 1, 3/2)
  end
  def test_4()  
    assert_equal( 1.5, 3/2.0)
  end
end

#create TestSuites.
test_1 = Test::Unit::TestSuite.new("Test 1")
test_1 << MyTest.new('test_1')
#Same a bit shorter
test_2 = Test::Unit::TestSuite.new("Test 2") << MyTest.new('test_2')
test_3 = Test::Unit::TestSuite.new("Test 3") << MyTest.new('test_3')
test_4 = Test::Unit::TestSuite.new("Test 4") << MyTest.new('test_4')


#run the suites
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_1)}
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_2)}
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_3)}
Thread.new{Test::Unit::UI::Console::TestRunner.run(test_4)}

看起来不错,但我没有进行基准测试。

输出(见下文)有点混乱,每个线程都将自己的消息发布到其他线程的消息中,但它似乎工作正常。 因此,也许您必须捕获每个线程的输出才能获得更好的测试日志。

Loaded suite Test 4Loaded suite Test 1Loaded suite Test 2Loaded suite Test 3
Started
Started
.
Started
.
Started

.
.
Finished in 0.328125 seconds.

Finished in 0.328125 seconds.




1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
Finished in 0.765625 seconds.
Finished in 0.546875 seconds.
100% passed
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications



3.05 tests/s, 3.05 assertions/s
100% passed
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications
1 tests, 1 assertions, 0 failures, 0 errors, 0 pendings, 0 omissions, 0 notifications

3.05 tests/s, 3.05 assertions/s

100% passed
100% passed
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Ruby 测试单元在一个脚本中并行运行多个测试 的相关文章

  • 将对象数组中的属性映射到另一个数组的更有效的 Ruby 方法?

    我不会在这里重复我的问题 但是有没有更有效的方法来写这个 def recruits names names for r in self referrals do names lt lt r display name end return n
  • 如何使用 Ruby 2.7.0 修复 Rails 的警告消息

    有没有人解决这个问题Ruby 2 7 0 I used rbenv并安装了 Ruby v2 7 0 然后使用创建了一个 Rails 项目Rails v6 0 2 1 目前 通过运行之一 rails s rails s u puma rail
  • 无需别名的 Ruby YAML 编写

    我正在从 ruby 将数据写入 yaml 文件 并且经常在该文件上添加别名 像 id001 somekey somevalue id001 就我而言 我使用 yaml 文件来aid可读性并将名称添加到文件中的值 因为现有数据只是 没有键的分
  • 在 ruby​​ 中读/写受密码保护和加密的文件

    我想加密一个 ruby 程序将从中加载数据的文件 此外 我需要程序在启动时提示输入密码 该密码将用于解密文件 换句话说 该文件需要加密地驻留在计算机上 只有拥有密码的用户才能运行该应用程序 我已经开始研究 openpgp 但据我了解 这仍然
  • 单元测试依赖注入

    我对茉莉花和业力是全新的 我相信我的环境设置正确 并且我能够运行非常基本的单元测试 但是一旦我尝试实例化控制器 我就会收到未知提供程序错误 并且我不确定如何调试它 我需要传入 stateProvider 依赖项吗 我在角种子示例中没有看到这
  • Capybara 的 has_selector 有哪些选项?

    我在 RSpec 中遇到此错误 有没有任何文档have selector解释了选项哈希中的每个键以及它到底有什么作用 invalid keys content should be one of text visible between co
  • 使用 Minitest 测试自定义验证器

    我有多个带有电子邮件验证的模型 因此 我将验证提取到自定义验证器中 我按照以下教程做到了这一点导轨指南 http guides rubyonrails org active record validations html custom va
  • 并行应用程序的可变与不可变[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 在我正在编写的应用程序中 我需要编写大量基本类型 这些类型很可能是不可变的 但我想知道并行应用程序中可变类型与不可变类型的比较如何 您可以对可变
  • 如何运行传递给模拟方法的 lambda 函数?

    我想知道是否可以运行作为参数传递给模拟函数的 lambda 函数 并在调用模拟方法时运行它 我正在使用 Mockk 我想象代码是这样的 class DataManager fun submit lambda Int gt Unit val
  • SLURM 节点、任务、核心和 CPU

    有人能够澄清这些东西到底是什么吗 据我所知 节点是集群内的计算点 本质上是一台计算机 任务是可以在单个节点或多个节点上执行的进程 核心基本上是指您希望在单个节点上分配多少 CPU 来执行分配给该 CPU 的任务 它是否正确 我混淆了什么吗
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • 在 Java 中并行处理两个任务

    我想在一个方法中调用8个方法 这8个方法中的2个方法是一个洞任务 其余6个方法是另一个洞任务 我想同时并行处理这两个任务 据我所知 我可以用线程来做到这一点 但说实话 要么我看不到与我的目标相似的示例 要么即使我看到了我也无法理解该示例 您
  • 如何编写一个在安装 RubyGem 时调用的钩子?

    我想编写一个 Ruby 片段 当我的 Gem 首次安装时运行 sudo gem install mygem 能做到吗 看起来并没有真正支持 我发现了一个 post install message 属性 您应该能够在 gem 规范中设置该属性
  • 如何在 gem 的示例脚本中使用 pry-byebug ?

    我正在制作我的第一个 gem 它不是 Rails 应用程序 而是一个带有一些 AI 的 tic tac toe 库 这样我就可以与一个永远不会输的计算机对手比赛 并在可能的情况下强行获胜 现在我正在尝试调试人工智能中的攻击策略 但我似乎无法
  • 什么是 - 获取的是一个目录 - 错误消息

    我收到这个奇怪的错误 Users gideon Documents ca ruby rubytactoe lib player rb 13 in gets Is a directory spec Errno EISDIR 玩家规格 rb r
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • Ruby 的字符串并置功能的官方文档在哪里?

    我最近意识到 如果你并置一系列 Ruby 字符串文字 例如 a b c 它相当于这些字符串文字的串联 但是 我在任何地方都找不到这种语言功能的记录 我使用术语 并置 和 串联 进行搜索 但只在几个 StackOverflow 响应中找到了对
  • 无法获取log.d或输出Robolectrict + gradle

    有没有人能够将 System out 或 Log d 跟踪从 robolectric 测试输出到 gradle 控制台 我在用Robolectric Gradle 测试插件 https github com robolectric robo
  • Emacs、ruby:将 do 结束块转换为大括号,反之亦然

    我经常发现自己转换这样的代码 before do something end to before something 有没有办法在 emacs 中自动执行此任务 我使用 ruby mode 和 rinary 但它们在这里没有太大帮助 rub
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid

随机推荐

  • Android ImageView NullPointerException

    我有两个图像 一个是红灯 一个是绿灯 我有一个自定义 ListView 我想在列表项处于非活动状态时显示红灯 在列表项处于活动状态时显示绿灯 按下时会激活列表项 这是我的代码 row xml
  • CSS,div 内的居中链接

    我怎样才能像这样集中我的链接 它们都集中在一个div 但它们从相同的距离开始 i am link 1 i am a longer link than link 1 i am a short link we are all centered
  • 有没有办法将文件的内容传递给curl?

    我想从命令行执行一个相当复杂的具有多部分 混合边界的 HTTP 请求 POST batch HTTP 1 1 Host www googleapis com Content length 592 Content type multipart
  • 使用 JMeter 将文件上传到 Rest API

    注意 我已经检查过BlazeMeter 教程 https www blazemeter com blog testing advanced rest api file uploads jmeter当我使用 文件上传 选项卡时 它将文档作为正
  • Python Excel 突出显示单元格差异

    前言 我是新人 自学成才 这是我的第一个编码项目 我知道这很糟糕 一旦完成并工作 我将重写它 我正在尝试编写一个 python 脚本来比较 2 个 Excel 文件并突出显示不同的单元格 我可以打印出差异 使用 pandas 并突出显示一个
  • 后台获取似乎不会发生火灾

    在我的应用程序中 我执行了下面列出的操作 并向应用程序提取例程添加了计数器 以突出显示 iOS 8 1 调用提取的次数 打开后台模式并启用后台获取 为 performFetchWithCompletionHandler 编写代码 NSLog
  • XSD 验证错误:“cvc-elt.1:找不到元素 'xs:schema' 的声明”

    我正在尝试使用 Maven XML 插件根据模式验证我的 xml 但我一直收到错误消息 cvc elt 1 找不到元素 xs schema 的声明 我想它必须处理我的名称空间声明 所以它们是 在我的 XSD 中
  • 如何设置 Visual Studio 2012 使用 JavaScript 编辑器处理 asp 文件

    如何告诉 Visual Studio 2012 将经典 ASP 文件 扩展名 asp 识别为 JavaScript 我已将 asp 扩展名注册到脚本编辑器 这在 2010 年曾经起到过作用 但现在没有帮助 VS 似乎不知道脚本编辑器使用什么
  • NLTK v3.2:无法 nltk.pos_tag()

    嗨 文本挖掘冠军 我在 Windows 10 上使用 Anaconda 和 NLTK v3 2 客户端环境 当我尝试 POS 标记时 我不断收到 URLLIB2 错误 URLError
  • cakephp render-false 操作仍然回显 html 模板

    对于控制器中不需要视图的操作 我将禁用布局和模板 如下所示 this gt autoRender false 一切都很好 然而 在同一操作中 我会回显 通过 或 失败 来表明我对结果的看法 问题是一堆文本也被回显 我的 失败 或 通过 在最
  • 如何在 Crypto++ 中使用 Shamir 秘密共享类

    我尝试使用秘密共享 http www cryptopp com docs ref class secret sharing htmlCrypto 中的类 但我无法使其工作 这是我的代码 using namespace CryptoPP vo
  • SQL Server,如何设置建表后自增而不丢失数据?

    我有一张桌子table1在 SQL Server 2008 中 它有记录 我想要主键table1 Sno列是自动递增列 可以在不进行任何数据传输或表克隆的情况下完成此操作吗 我知道我可以使用 ALTER TABLE 添加自动增量列 但是我可
  • 如何固定/锁定背景图像和包含图像的 Div 的位置

    我有一个地图图像 1080x1080px 我希望它作为主体或容器 div 的背景 我需要图像始终保持固定在其位置 即使在调整浏览器窗口大小时也是如此 我在主 div 容器内有 div 这些 div 包含图像 这些图像是放置在特定位置的地图标
  • 根据标识符估算缺失值[重复]

    这个问题在这里已经有答案了 我喜欢根据某个变量与匹配索引配对的值来填充其缺失值 示例 第一列是索引 第二列是值 mat lt cbind c 1 1 2 2 3 3 4 4 4 c 4 3 NA 2 4 NA 3 8 NA 1 2 NA N
  • tomcat下指定自定义logging.properties

    我想在一个tomcat下有2个web应用程序 这2个项目应该有自己的logging properties 我知道如果您将logging properties放入war文件中 这是可能的 但我想指定一个自定义loggin properties
  • 将文件上传到电子表格时显示“UiApp 已被弃用。请改用 HtmlServices”

    这件事是昨天才发生的 我使用这个脚本将文档上传到电子表格的单元格 直到今天我遇到了一个错误 UiApp 已被弃用 请改用 HtmlService 我怎样才能解决这个问题 My code upload document into google
  • 获取图表中走过的最长路线

    我有一组相互连接的节点 我有以下节点网络 这里0是起点 我想遍历尽可能多的节点 并且一个节点只遍历一次 另外 在从 0 到目标节点的旅程中 我只想有一个奇数编号的节点 如 1 3 5 7 现在我需要找出从起始位置 0 开始可以行驶的最长路线
  • FastAPI 以串行方式而不是并行方式运行 api 调用

    我有以下代码 import time from fastapi import FastAPI Request app FastAPI app get ping async def ping request Request print Hel
  • 在常量表达式中调用“static constexpr”函数是...错误? [复制]

    这个问题在这里已经有答案了 我有以下代码 class MyClass static constexpr bool foo return true void bar noexcept foo 我希望从那时起foo is a static co
  • 使用 Ruby 测试单元在一个脚本中并行运行多个测试

    我在一个 ruby 脚本中有 4 个测试 我使用命令运行 ruby test rb 输出看起来像 Loaded suite test Started Finished in 50 326546 seconds 4 tests 5 asser