假设我们有一个测试套件,需要5分钟
假设它在90%时失败
假设它在95%时失败
而不是运行3次(一次到90次,一次到95次,一次100% ) ~14分钟
我想运行两次(一次从0到90,一次从90到95,95到100,并一直运行,以确保一切正常),如果我重新启动它的速度快的话大约10-11分钟
因此,当它失败时,我想输出规范编号(基于当前的测试),然后当我再次从命令行运行时,我需要让它从这个数字开始。那么,我如何使用rspec spec/ --startat 321
之类的东西让rspec运行
发布于 2013-07-03 03:43:55
我认为这样的东西不会起作用,因为RSpec默认以随机顺序运行测试,以确保它们不依赖于它们的顺序。也许一个合适的解决方案是记下失败的测试,并只运行这些测试。您可以像这样运行特定的测试:
rspec /spec/controllers/example_controller_spec.rb:19
其中19
是您的测试所在的行。在修复了所有失败的测试之后,您可以重新运行整个测试套件以确保一切正常。
发布于 2013-07-03 04:43:23
您所遇到的问题可以通过使用rspec中的--tag
选项来解决。您可以将标记应用于失败的组,然后编写一个小脚本来按您想要的顺序执行它们。这是rspec docs page on tags。
tag使用--
(或-t)选项按标签过滤示例。
标记可以是简单的名称,也可以是名称:值对。在第一种情况下,将过滤包含:name => true的示例。在第二种情况下,将过滤带有:name的示例,其中=>始终为字符串。在这两种情况下,名称都会转换为符号。
标签也可用于通过在标签前添加~来排除示例。例如,~tag将排除所有标记为:tag value的示例,而~tag:=>将排除所有标记为:tag =>值的示例。
为了与Cucumber语法兼容,标签可以选择以@符号开头,该符号将被忽略。
文档页面中的一些示例:
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
这将比使用行号或手动排除单个示例更容易。希望这能有所帮助。
https://stackoverflow.com/questions/17434342
复制相似问题