首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在rspec中跳过x个测试

如何在rspec中跳过x个测试
EN

Stack Overflow用户
提问于 2013-07-03 03:37:45
回答 2查看 562关注 0票数 1

假设我们有一个测试套件,需要5分钟

假设它在90%时失败

假设它在95%时失败

而不是运行3次(一次到90次,一次到95次,一次100% ) ~14分钟

我想运行两次(一次从0到90,一次从90到95,95到100,并一直运行,以确保一切正常),如果我重新启动它的速度快的话大约10-11分钟

因此,当它失败时,我想输出规范编号(基于当前的测试),然后当我再次从命令行运行时,我需要让它从这个数字开始。那么,我如何使用rspec spec/ --startat 321之类的东西让rspec运行

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-03 03:43:55

我认为这样的东西不会起作用,因为RSpec默认以随机顺序运行测试,以确保它们不依赖于它们的顺序。也许一个合适的解决方案是记下失败的测试,并只运行这些测试。您可以像这样运行特定的测试:

代码语言:javascript
运行
复制
rspec /spec/controllers/example_controller_spec.rb:19

其中19是您的测试所在的行。在修复了所有失败的测试之后,您可以重新运行整个测试套件以确保一切正常。

票数 2
EN

Stack Overflow用户

发布于 2013-07-03 04:43:23

您所遇到的问题可以通过使用rspec中的--tag选项来解决。您可以将标记应用于失败的组,然后编写一个小脚本来按您想要的顺序执行它们。这是rspec docs page on tags

tag使用--

(或-t)选项按标签过滤示例。

标记可以是简单的名称,也可以是名称:值对。在第一种情况下,将过滤包含:name => true的示例。在第二种情况下,将过滤带有:name的示例,其中=>始终为字符串。在这两种情况下,名称都会转换为符号。

标签也可用于通过在标签前添加~来排除示例。例如,~tag将排除所有标记为:tag value的示例,而~tag:=>将排除所有标记为:tag =>值的示例。

为了与Cucumber语法兼容,标签可以选择以@符号开头,该符号将被忽略。

文档页面中的一些示例:

代码语言:javascript
运行
复制
describe "group with tagged specs" do
  it "example I'm working now", :focus => true do; end
  it "special example with string", :type => 'special' do; end
  it "slow example", :skip => true do; end
  it "ordinary example", :speed => 'slow' do; end
end

这将比使用行号或手动排除单个示例更容易。希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17434342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档